Asp Scriptlerde Hala Sql İnjection Açığı Çok Sık Rastlamaktayız.Bir Çok Kişi Tarafından Bilinen Uygulamalardı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+uyel er gibi yazdığında kullanıcı adı ve şifresi ortaya çıkacaktır. Şimdi ise bunu önleyen fonksiyonumuzu yazalım.
PHP- Kodu:
Kullanımı:
PHP- Kodu:
Böylece id değişkenine fonksiyonun uyarlanmış halini atamış olduk.
PHP- Kodu:
şeklinde yazarsak bütün tehlike ortadan kalkmakta ve kişi Default.asp sayfasına yönlenmektedir.
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+uyel er gibi yazdığında kullanıcı adı ve şifresi ortaya çıkacaktır. Şimdi ise bunu önleyen fonksiyonumuzu yazalım.
PHP- Kodu:
<%
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
%>
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ı:
PHP- Kodu:
<%
id=QueryFilter(Request.QueryString("id"))
%>
id=QueryFilter(Request.QueryString("id"))
%>
Böylece id değişkenine fonksiyonun uyarlanmış halini atamış olduk.
PHP- Kodu:
....where id="&id&""
şeklinde yazarsak bütün tehlike ortadan kalkmakta ve kişi Default.asp sayfasına yönlenmektedir.