Kullanıcı Adı:  
Şifre:     

Mesaj Önizleme 
SQL Injection nedir ve nasıl korunulur ?
02-23-2008 12:04 AM SQL Injection nedir ve nasıl korunulur ?
ZdeArBaN
Yönetici
*******


Mesajlar: 7,172
Katılım: Feb 2008
Statü: Çevrimdışı
Karma Puanı: 0

Nerden:

Mesaj: #1
SQL Injection nedir ve nasıl korunulur ?


SQL Injection nedir ve nasıl korunulur ?

--------------------------------------------------------------------------------

Önce, kendimce sql injection’ın bir tanımını yapayım:
Sql injection kötü niyetli kişilerin bir web sitesinin querystring yada form değerleri vasıtasıyla otomatik olarak ürettiği sql komutlarının içeriğine müdahale etmektir. (umarım doğrudur)
//Not yönetici arkadaşlar örnek kısmını silmekte serbesttir.

Peki bu nasıl yapılır? Örnek:
http://www.bilmemne.com/bilmemne.aspx?ID=5
gibi bir satırı
http://www.bilmemne.com/bilmemne.aspx?ID=5; DROP Table Makaleler –
şekline getirmekle yapılabilir yada web sitesinin üye girişi kısmına kullanıcı adı bölümüne yine benzer bir ekleme yapılabilir.
Peki bu illetden en kolay şekilde nasıl kurtuluruz? Tamam hemen google’a girelim “SQL Injection” yazalım ve işte karşımızda 100 milyon tane makale, bir dakika, bunların hepsinde aynı şey yazıyor;
İşte SQL Injection’dan anında kurtulmanız için gereken 3 adım!
1- Parameterized Sql kullanın
2- Veritabanına asla ve asla “admin” yetkilerine sahip bir kullanıcı adıyla giriş yapmayın. Bunun yerine kısıtlı haklara sahip bir kullanıcı adını kullanın.
3- Kullanıcıların gönderdiği bilgilere sakın güvenmeyin farklı noktalarda defalarca kontrol edin.
Makalelerde herşey toz pembe gözüküyor ama iş başa düşünce öyle olmuyor maalesef, şimdi burada ben basit bir regular expression yazdım ve kendim biraz test ettim, iyi sayılabilir.
(Boşlukları yok sayalım)
(?( \’+ | \;+ ) \s* (SELECT|INSERT|UPDATE|DELETE|OR|AND|DROP|GRANT|REV OKE|TRUNCATE))
Bu deseni yazarken düşündüğüm şey şuydu;
1- Saldırgan en başta tek tırnak işareti atmalıki “şifre kısmını” kandıran bir enjeksiyon yapabilsin, yada querystring’e ek yapabilmesi için en az bir kez noktalı virgül atması gerekir, bu yüzden baştaki ( \’+ | \;+ ) kısmını ekledim daha sonra ise desen yine basit sql kelimelerini gösteriyor. Burada dikkat edilmesi gereken bir nokta var, o da, bu deseni kandırmanın bir yolu olduğu peki nasıl? eğer kişi tek tırnak yada noktalı virgülden sonra “/* */” stilinde bir “yorum kısmı” eklerse ne olacak? eğer asp.net kullanıyorsanız tamam problem yok çünkü “validateRequest” özelliğini kapatmamışsanız, asp.net kullanıcıdan gelen bilginin potansiyel tehlikeler içeryor olduğu gerekçesiyle sayfanın çalışmasını durdurur, peki ya PHP, yada ASP yada JSP bunu yapıyor mu? ben anlamam bunlardan, bilmiyorum, bilen varsa söylesin.
bunun için desene küçük bir ek yaptım, sonuç olarak
(tamam ek kısım kaba duruyor biraz daha değişik metodlar kullanılabilir.)
(?( \’+ | \;+ ) \s* [/\* (\w*W*\d*\D*\s*) \*/]* (SELECT|INSERT|UPDATE|DELETE|OR|AND|DROP|GRANT|REV OKE|TRUNCATE))
burada bilmediğim şey daha ne tür enjeksiyon metodları olduğu yada başka ne şekillerde bu desenin kandırılabileceği, daha doğrusu, veritabanına etkiyebilecek bir sql komutunun ne şekilde bu desene takılmadan içeri girebileceği? Arkadaşlardan isteğim bu konuda yardımcı olmaları.


Web hosting hostinghost dedicated IRC host BNC host dedicated WEB reseller irc reseller ve hepsi http://www.dearshell.net destek@dearshell.com
02-23-2008 12:04 AM
Bu kullanıcının gönderdiği mesajları bul Bu mesajı bir cevapta alıntı yap
Mesaj Önizleme 


Yazdırılabilir Bir Versiyona Bak
Bu Konuyu Bir Arkadaşına Gönder
Bu Konuya Abone Ol | Konuyu Favorilerine Ekle

Foruma Git:


Search Engine Optimization by SpiceFuse
muhabbet hosting chat sohbet irc forum saç dökülmesi muhabbet mobilya web hosting dedicated saç dökülmesi radyo sohbet saç bakımı site kozmetik