İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

ASP (Active Server Pages) SQL İnjection Engellemek

TİTSECURİTY

0
İyinet Üyesi
Katılım
12 Mayıs 2010
Mesajlar
134
Reaction score
5
asp.jpg

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.

01 <%
02 Function QueryFilter(Str)
03 Str = Replace(Str, \"*\", \"[INJ]\",1,-1,1)
04 Str = Replace(Str, \"=\", \"[INJ]\",1,-1,1)
05 Str = Replace(Str, \"<\", \"[INJ]\",1,-1,1) Str = Replace(Str, \">\", \"[INJ]\",1,-1,1)
06 Str = Replace(Str, \";\", \"[INJ]\",1,-1,1)
07 Str = Replace(Str, \"(\", \"[INJ]\",1,-1,1)
08 Str = Replace(Str, \")\", \"[INJ]\",1,-1,1)
09 Str = Replace(Str, \"+\", \"[INJ]\",1,-1,1)
10 Str = Replace(Str, \"#\", \"[INJ]\",1,-1,1)
11 Str = Replace(Str, \"'\", \"[INJ]\", 1, -1, 1)
12 Str = Replace(Str, \"&\", \"[INJ]\", 1, -1, 1)
13 Str = Replace(Str, \"%\", \"[INJ]\", 1, -1, 1)
14 Str = Replace(Str, \"?\", \"[INJ]\", 1, -1, 1)
15 Str = Replace(Str, \"´\", \"[INJ]\", 1, -1, 1)
16 Str = Replace(Str, \",\", \"[INJ]\",1,-1,1)
17 Str = Replace(Str, \"UNION\", \"[INJ]\",1,-1,1)
18 Str = Replace(Str, \"SELECT\", \"[INJ]\",1,-1,1)
19 Str = Replace(Str, \"WHERE\", \"[INJ]\",1,-1,1)
20 Str = Replace(Str, \"LIKE\", \"[INJ]\",1,-1,1)
21 Str = Replace(Str, \"FROM\", \"[INJ]\",1,-1,1)
22 Str = Replace(Str, \"UPDATE\", \"[INJ]\",1,-1,1)
23 Str = Replace(Str, \"INSERT\", \"[INJ]\",1,-1,1)
24 Str = Replace(Str, \"ORDER\", \"[INJ]\",1,-1,1)
25 Str = Replace(Str, \"GROUP\", \"[INJ]\",1,-1,1)
26 Str = Replace(Str, \"ALTER\", \"[INJ]\",1,-1,1)
27 Str = Replace(Str, \"ADD\", \"[INJ]\",1,-1,1)
28 Str = Replace(Str, \"MODIFY\", \"[INJ]\",1,-1,1)
29 Str = Replace(Str, \"RENAME\", \"[INJ]\",1,-1,1)
30 Str = Replace(Str, Chr(39), \"[INJ]\", 1, -1, 1)
31 If InStr(1,Str,\"[INJ]\",1) then
32 Response.Redirect \"Default.asp\"
33 end if
34 QueryFilter = Str
35 End Function
36 %>

Kullanımı :

1 <% id=QueryFilter(Request.QueryString(\"id\")) %>

Böylece id değişkenine fonksiyonun uyarlanmış halini atamış olduk.



Veri çekerken yazacağımız şekli;

1 ....where id=\"&id&\"\"

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


Kaynak
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst