Loading
ASP SQL Injection Engelleme etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
ASP SQL Injection Engelleme etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

21 Haziran 2012 Perşembe

ASP SQL Injection Engelleme

,
Bu dökümanımızda asp ile gelen saldırı türlerinden sql incejtionu önlemeyi öğrenicez. Hala bir çok sitede bu açıklar mevcuttur ve bir çok kişi tarafından bilinmeyen bir uygulamadır.
 
Diyelim ki verimizi Request.QueryString olarak olmaktayız ve yazdırmaktayız. Linkimizi haber.asp?id=500 olarak farzedelim. Burada veri çekerken programlamacı where id="&request.querystring("id")&"" diye veriyi çekmektedir. Fakat bu büyük bir SQL açığı oluşturmaktadır.
 
Kullanıcı grup bu linki haber.asp?id=500+union+select+0,kadi,2,3+from+uyeler gibi yazdığında kullanıcı adı ve şifresi ortaya çıkacaktır. Şimdi ise bunu önleyen fonksiyonumuzu yazalım.
 
<%
Function QueryFilter(Str)
Str = Replace(Str, "*", "[INJ]",1,-1,1)
Str = Replace(Str, "=", "[INJ]",1,-1,1)
Str = Replace(Str, "<", "[INJ]",1,-1,1)
Str = Replace(Str, ">", "[INJ]",1,-1,1)
Str = Replace(Str, ";", "[INJ]",1,-1,1)
Str = Replace(Str, "(", "[INJ]",1,-1,1)
Str = Replace(Str, ")", "[INJ]",1,-1,1)
Str = Replace(Str, "+", "[INJ]",1,-1,1)
Str = Replace(Str, "#", "[INJ]",1,-1,1)
Str = Replace(Str, "'", "[INJ]", 1, -1, 1)
Str = Replace(Str, "&", "[INJ]", 1, -1, 1)
Str = Replace(Str, "%", "[INJ]", 1, -1, 1)
Str = Replace(Str, "?", "[INJ]", 1, -1, 1)
Str = Replace(Str, "´", "[INJ]", 1, -1, 1)
Str = Replace(Str, ",", "[INJ]",1,-1,1)
Str = Replace(Str, "UNION", "[INJ]",1,-1,1)
Str = Replace(Str, "SELECT", "[INJ]",1,-1,1)
Str = Replace(Str, "WHERE", "[INJ]",1,-1,1)
Str = Replace(Str, "LIKE", "[INJ]",1,-1,1)
Str = Replace(Str, "FROM", "[INJ]",1,-1,1)
Str = Replace(Str, "UPDATE", "[INJ]",1,-1,1)
Str = Replace(Str, "INSERT", "[INJ]",1,-1,1)
Str = Replace(Str, "ORDER", "[INJ]",1,-1,1)
Str = Replace(Str, "GROUP", "[INJ]",1,-1,1)
Str = Replace(Str, "ALTER", "[INJ]",1,-1,1)
Str = Replace(Str, "ADD", "[INJ]",1,-1,1)
Str = Replace(Str, "MODIFY", "[INJ]",1,-1,1)
Str = Replace(Str, "RENAME", "[INJ]",1,-1,1)
Str = Replace(Str, Chr(39), "[INJ]", 1, -1, 1)
If InStr(1,Str,"[INJ]",1) then
Response.Redirect "Default.asp"
end if
QueryFilter = Str
End Function
%>
 
Kullanımı: 
<%
id=QueryFilter(Request.

QueryString("id"))
%>
Böylece id değişkenine fonksiyonun uyarlanmış halini atamış olduk.
Veri çekerken yazacağımız şekli;
....where id="&id&""

şeklinde yazarsak bütün tehlike ortadan kalkmakta ve kişi Default.asp sayfasına yönlenmektedir.
 
 

Yazilim Kitabi Copyright © 2012