ASP ile SQL Injection açıklarına karşı Replace fonkisyon örneği

 

SQL Injection açığı adından da anlaşılabileceği gibi var olan bir sql kodun içerisine dışarıdan başka bir kod enjekte etmektedir , başka bir deyişle sql kodunu asıl amacının dışında başka bir amaç için kullanmaktır.

Örnekleyecek olursak :

Username : ilhan
Password : 0212
Şeklindeki kullanıcı girdisi aşağıdaki SQL Deyimini oluşturacaktır;
SELECT count(*) FROM Users WHERE Username = 'ilhan' AND Password ='0212'
İlk bakışta sorun olmayan bir SQL Deyimi... Fakat saldırganın;
Username : ilhan
Password : ‘ OR 1=1--
Şeklindeki girdilerle oluşturacağı SQL Deyimi ise;
SELECT count(*) FROM Users WHERE Username = 'ilhan' AND Password ='' OR 1=1 --'
Olacaktır ki, bu durumda girişin sağlanması için şart “ilhan” kullanıcı adına ait şifrenin
hiçbirşey* olması veya ikinci bir opsiyon olarak 1=1 eşitliğinin sağlanmasıdır.

nasıl korunmalı :

<%
Function Temizle(deger)


     If deger = "" Then Exit Function

     deger = Replace(deger, "<", "&lt;")
     deger = Replace(deger, ">", "&gt;")
     deger = Replace(deger, "[", "&#091;")
     deger = Replace(deger, "]", "&#093;")
     deger = Replace(deger, """", "", 1, -1, 1)
     deger = Replace(deger, "=", "&#061;", 1, -1, 1)
     deger = Replace(deger, "'", "''", 1, -1, 1)
     deger = Replace(deger, "select", "sel&#101;ct", 1, -1, 1)
     deger = Replace(deger, "join", "jo&#105;n", 1, -1, 1)
     deger = Replace(deger, "union", "un&#105;on", 1, -1, 1)
     deger = Replace(deger, "where", "wh&#101;re", 1, -1, 1)
     deger = Replace(deger, "insert", "ins&#101;rt", 1, -1, 1)
     deger = Replace(deger, "delete", "del&#101;te", 1, -1, 1)
     deger = Replace(deger, "update", "up&#100;ate", 1, -1, 1)
     deger = Replace(deger, "like", "lik&#101;", 1, -1, 1)
     deger = Replace(deger, "drop", "dro&#112;", 1, -1, 1)
     deger = Replace(deger, "create", "cr&#101;ate", 1, -1, 1)
     deger = Replace(deger, "modify", "mod&#105;fy", 1, -1, 1)
     deger = Replace(deger, "rename", "ren&#097;me", 1, -1, 1)
     deger = Replace(deger, "alter", "alt&#101;r", 1, -1, 1)
     deger = Replace(deger, "cast", "ca&#115;t", 1, -1, 1)

     Temizle = deger

End Function
%>


Kullanımı:

Formdan ir veriyi çekerken öncelikle fonkiyona gönderilip zararlı karakterler replace edilmeli
<% strSifre = Temizle(Trim(Request.Form("parola"))) %>

Bunu beğen
Paylaş

Yorumlar
Yorum Yaz
İsim : (*)
E-mail :
Web Adresi:
:
(*)
 
Kapat