Asp (Sql Injection Ve Korunma) |
Yanıt Yaz |
Yazar | |
megabros
Security Professional Kayıt Tarihi: 08-06-2009 Konum: Turkey Status: Aktif Değil Points: 752 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı megabros
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
Gönderim Zamanı: 23-08-2009 Saat 22:55 |
Eminimki bir çoğunuzun sql injection hakkında azda olsa bilgisi vardır. Sql injection`u sql server`ın meta karakteri olan (`) meydana getiriyordu.Sql server`da bundan etkilenmemek için tek tırnak yerine ” kullanmamız gerekiyor. Bu yazımızda sql servera tek tırnağı çift tırnak gibi algılamasını sağlatacak fonksiyonu yazacağız.Bu sayede güvelik açığımız kalmayacak. Tabiki bundan önce en önemli güvenlik zaaflarından biri olan blacklisting yöntemini anlatacağım.
Blacklisting = kara liste yöntemi Yani bir takım sql cümleciklerini kara listeye ekleyerek çalışmalarını engelliyoruz. Bu yöntem sql injection`u engelleme de en büyük zaafları oluşturur (xss içinde blacklisting vardır ve O da aynı şekilde güvenlik zaafıdır) Öncelikle en basit şekilde yazılmış üyelik sistemimizi inceleyelim. Yazıyı daha iyi anlamanız açısından üyelik sistemini biraz açıklayalım : Giriş yapıp içeriğini görüntülemek istediğimiz sayfa olan sayac.asp <body><html> <% <form action=”giris.asp” method=”post”> <tr><td><p align=”right”> Parola : </td> <td> <input type=”text” name=”parola” size=”20″></td></tr> <tr><td><p aling=”right”> </td> <td> <input type=”submit” value=”Giriş”></td></tr></form> <% <tr><td> </td><td>Hoşgeldiniz</td></tr> <center><tr><td>& ; ; ;nbsp;</td><td> <font color=”#FF0000″>Oturumu Kapat</font></a></td></center> <% İnclude ettiğimiz ayar.asp : Üyelik.mdb içinde üyeler adında bir tablomuz var.5 adet sütundan oluşuyor.id – kullanıcı – parola – giris_tarihi ve onay Giris.asp sayfamız Şimdi gelelim asıl mevzuya. Sayac.asp sayfasını çağırdığızda karşınıza kullanıcı adı – parola soran sayfa geliyor. Buraya normalde admin-admin yazarak giriş yaparız ve index.asp`ye yönleniriz.Daha sonra geri dönüp sayfayı yenilediğimizde sayac.asp`ye giris yapmış oluruz. (Bu kendi kodladığım bişey. Böyle bi saçmalığa gerek yok aslında :) Boş alan bırakarak giriş yapmaya çalışınca `Lütfen boş alan bırakmayın` hatası alıyoruz.Peki bunu sağlayan kodlar neler? KodIf kullanici=”" or parola=”" Then Eğer kullanici değeri boş bir değere eşitse `lütfen boş bırakmayın` yazdırıyoruz ve response.end komutuyla komutu durduruyoruz. End if ile şart cümleciğimizi kapatıyoruz. Bu mantıkla biz bir blacklisting yapabiliriz. Eğer kullanıcı=x ise `lütfen sql deneme` gibi bir mantıkla bunu uygulayacağız. Çok bilindik sql cümleciklerinden biri olan `OR` ile giriş yapmayı deneyelim. Örnek : KodIf kullanici=”`OR`” or parola=”`OR`” Then Bu iki kod parçasını sayfanıza eklediğizde artık `OR` kodu ile giriş yapılamayacak. Peki bu güvenlimi ? Diyelimki bütün bilindik sql kodlarını tek tek blacklisting yaptınız güvende olduğunuzu düşünüyorsunuz peki sizi hacklemeye düşünen kişi ya sizden biraz farklı düşünüyorsa ??? Denediğiniz zaman bu kod ile gayet güzel bir şekilde giriş yapıldığını göreceksiniz. Hadi diyelim bu ihtimalide düşünüp bunuda engellediniz. Peki aşağıda parantez içinde vereceğim kodların hepsini nasıl engelleyebilirsiniz ? Kodun sonundaki boşluk sayısı değiştikçe sizin yaptığınız blacklisting çuvallıyor. (`OR` ) yaptığım şey sadece boşluk sayısını arttırmak.Her koyduğum boşluk için yeni bir sql açığı meydana geliyor. Tamam hadi sizi kırmayalım ve boşluk karakterini de engelleyelim. Peki sizce bütün bilindik sql cümleciklerini engelleyebilir misiniz? `OR` Tamamen kafanızdan türetebileceğiniz zilyar tane sql cümleciği var :) Demekki ne olursa olsun üyelik sistemimizi blacklisting uygulamalarına emanet etmeyeceğiz. Peki ne yapmalıyız ? Tek tırnak ile çift tırnağı değiştirecek bir fonksiyon bizim işimizi görür ;) <% Bu kod parçası sıradan bir güvenlik sistemidir fakat ilk aşamada bizim işimizi görür. Giriş yapılan paneldeki form’u denetleyen kod parçasıdır Saygılar..
|
|
kral
Administrator Kayıt Tarihi: 08-03-2006 Status: Aktif Değil Points: 957 |
Mesaj Seçenekleri
Yanıt Yaz
Alıntı kral
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
|
Teşekkürler bir örnekte ben ekleyeyim
<%
Function security(Filtre ) security = Filtre security = Replace(security, "<", "<" ) security = Replace(security, ">", ">" ) security = Replace(security, "^", "-" ) security = Replace(security, vbcrlf, "<br>" ) security = Replace(security, "script", "script", 1, -1, 0 ) security = Replace(security, "SCRIPT", "SCRIPT", 1, -1, 0 ) security = Replace(security, "Script", "Script", 1, -1, 0 ) security = Replace(security, "script", "Script", 1, -1, 1 ) security = Replace(security, "object", "object", 1, -1, 0 ) security = Replace(security, "OBJECT", "OBJECT", 1, -1, 0 ) security = Replace(security, "Object", "Object", 1, -1, 0 ) security = Replace(security, "object", "Object", 1, -1, 1 ) security = Replace(security, "applet", "applet", 1, -1, 0 ) security = Replace(security, "APPLET", "APPLET", 1, -1, 0 ) security = Replace(security, "Applet", "Applet", 1, -1, 0 ) security = Replace(security, "applet", "Applet", 1, -1, 1 ) security = Replace(security, "embed", "embed", 1, -1, 0 ) security = Replace(security, "EMBED", "EMBED", 1, -1, 0 ) security = Replace(security, "Embed", "Embed", 1, -1, 0 ) security = Replace(security, "embed", "Embed", 1, -1, 1 ) security = Replace(security, "event", "event", 1, -1, 0 ) security = Replace(security, "EVENT", "EVENT", 1, -1, 0 ) security = Replace(security, "Event", "Event", 1, -1, 0 ) security = Replace(security, "event", "Event", 1, -1, 1 ) security = Replace(security, "document", "document", 1, -1, 0 ) security = Replace(security, "DOCUMENT", "DOCUMENT", 1, -1, 0 ) security = Replace(security, "Document", "Document", 1, -1, 0 ) security = Replace(security, "document", "Document", 1, -1, 1 ) security = Replace(security, "cookie", "cookie", 1, -1, 0 ) security = Replace(security, "COOKIE", "COOKIE", 1, -1, 0 ) security = Replace(security, "Cookie", "Cookie", 1, -1, 0 ) security = Replace(security, "cookie", "Cookie", 1, -1, 1 ) security = Replace(security, "form", "form", 1, -1, 0 ) security = Replace(security, "FORM", "FORM", 1, -1, 0 ) security = Replace(security, "Form", "Form", 1, -1, 0 ) security = Replace(security, "form", "Form", 1, -1, 1 ) security = Replace(security, "on", "on", 1, -1, 0 ) security = Replace(security, "ON", "ON", 1, -1, 0 ) security = Replace(security, "On", "On", 1, -1, 0 ) security = Replace(security, "on", "on", 1, -1, 1 ) security = Replace(security, "or", "or", 1, -1, 0 ) security = Replace(security, "OR", "OR", 1, -1, 0 ) security = Replace(security, "Or", "Or", 1, -1, 0 ) security = Replace(security, "or", "or", 1, -1, 1 ) security = Replace(security, "document.cookie", "Document.cookie", 1, -1, 1 ) security = Replace(security, "javascript:", "javascript ", 1, -1, 1 ) security = Replace(security, "vbscript:", "vbscript ", 1, -1, 1 ) security = Replace(security, "SELECT", "Select ", 1, -1, 1 ) security = Replace(security, "DROP", "Drop ", 1, -1, 1 ) security = Replace(security, ";", "; ", 1, -1, 1 ) security = Replace(security, "--", "-- ", 1, -1, 1 ) security = Replace(security, "INSERT", "Insert ", 1, -1, 1 ) security = Replace(security, "DELETE", "Delete ", 1, -1, 1 ) security = Replace(security, "xp_", "xp_ ", 1, -1, 1 ) security = Replace(security, "UNION", "Union ", 1, -1, 1 ) security = Replace(security, "'", "`" ) End Function %> |
|
“Bilginin elde edilmesi... bizi iyiye ulaştıracaktır.
|
|
Yanıt Yaz | |
Tweet |
Forum Atla | Forum İzinleri Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Açık Forumda Anketlerde Oy Kullanma |