Database » Makaleler

SQL Injection nedir ve nasıl korunulur ?

Geri git   WHM cPanel Destek Platformu » Site, Sunucu Sorunlarınız ve Çözümleri » Database » Makaleler
Kayıt ol Yardım Üye Listesi Ajanda Forumları Okundu Kabul Et
 

Cevapla
 
LinkBack Seçenekler Stil
  #1 (permalink)  
Alt 14.06.07, 06:02 PM
CaLViN - ait Kullanıcı Resmi (Avatar)
Sevgi güçtür.
 
Üyelik tarihi: Apr 2007
Nerden: Outta nation
Yaş: 26
Mesajlar: 1.444
Tecrübe Puanı: 100000
CaLViN has a reputation beyond reputeCaLViN has a reputation beyond reputeCaLViN has a reputation beyond reputeCaLViN has a reputation beyond reputeCaLViN has a reputation beyond reputeCaLViN has a reputation beyond reputeCaLViN has a reputation beyond reputeCaLViN has a reputation beyond reputeCaLViN has a reputation beyond reputeCaLViN has a reputation beyond reputeCaLViN has a reputation beyond repute
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ı.
__________________
1.)Lütfen destek talebinde bulunmak için msn messenger üzerinden iletişime geçmeyiniz.
2.)Ücretsiz destek almak için forum sayfalarımızı kullanmanız aynı sorunu yaşayan diğer üyelerin cevaplara en kısa sürede ulaşabilmesi ve sizlere yardımcı olmak isteyen bizlerin ve diğer üyelerimizin zaman kazanmaları açısından çok önemlidir.
3.)Forumlarımızda sorunlarınızı anlatırken mümkün olduğunca çok detay vermeniz en kısa sürede sorununuza çözüm bulmanız açısından mühimdir.

Daha çok öğrenmek ve öğretmek dileğiyle..
Sevgiler..
The Platform.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl this Post!Reddit! Wong this Post!
Alıntı ile Cevapla
Cevapla



Seçenekler
Stil

Yetkileriniz
Yeni Mesaj yazma yetkiniz aktif değil dir.
Mesajlara Cevap verme yetkiniz aktif değil dir.
Eklenti ekleme yetkiniz aktif değil dir.
Kendi Mesajınızı değiştirme yetkiniz aktif değil dir.

Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık