Önce fonksiyonu tanımlayalım
'requestten gelen değişkenleri temizleme
function fnTemizle(gelen)
'gelen değer boşsa fonksiyonumuz düzgün çalışsın diye kontrol
if isnull(gelen) then gelen = " "
'sonra her satırda istediğimiz zararlı kodları temizliyoruz, bunları istediğimiz kadar çoğaltabiliriz.
gelen=replace(gelen, ">" , "", 1, -1, 1 )
gelen=replace(gelen, "<" , "", 1, -1, 1 )
gelen=replace(gelen, "" , "", 1, -1, 1 )
gelen=replace(gelen, "*" , "", 1, -1, 1 )
gelen=replace(gelen, "'" , "", 1, -1, 1 )
gelen=replace(gelen, " drop " , "", 1, -1, 1 )
gelen=replace(gelen, " select " , "", 1, -1, 1 )
gelen=replace(gelen, " delete " , "", 1, -1, 1 )
gelen=replace(gelen, "--" , "", 1, -1, 1 )
gelen=replace(gelen, " = " , "", 1, -1, 1 )
gelen=replace(gelen, " or " , "", 1, -1, 1 )
gelen=replace(gelen, " and " , "", 1, -1, 1 )
gelen =trim(gelen)
fnTemizle = gelen
end function
fonksiyonun kullanımı şu şekilde
<%
degisken =" bu deneme bir yazıdır. bu da html kodudur -- <br> ' gibi karakterler"
response.write(fnTemizle(degisken))
%>
çıktı: bu deneme bir yazıdır. bu da html kodudur br gibi karakterler
Dikkat ederseniz kodumuzdaki < > tagları içindeki değerler olduğu gibi kaldı. bu bizim işimizi görmede yetersiz kaldı.
O halde biz önce HTML taglarını temizleyelim. ardından da sql hacklerine karşı koruyalım.
Şöyle bir fonksiyonumuz olsun:
<%
Function htmlTemizle(strVeri)
If strVeri = "" Then Exit Function
strVeri = Replace(strVeri, "<br>", VBCRLF)
Set objRegExp = New Regexp
With objRegExp
.Pattern = "<.*?>"
.IgnoreCase = False
.Global = True
End With
strVeri = objRegExp.Replace(strVeri,"")
strVeri=replace(strVeri, "'" , "", 1, -1, 1 )
strVeri=replace(strVeri, " drop " , "", 1, -1, 1 )
strVeri=replace(strVeri, " select " , "", 1, -1, 1 )
strVeri=replace(strVeri, " delete " , "", 1, -1, 1 )
strVeri=replace(strVeri, "--" , "", 1, -1, 1 )
strVeri=replace(strVeri, " = " , "", 1, -1, 1 )
strVeri=replace(strVeri, " or " , "", 1, -1, 1 )
strVeri=replace(strVeri, " and " , "", 1, -1, 1 )
strVeri=replace(strVeri, " drop " , "", 1, -1, 1 )
strVeri=replace(strVeri, " select " , "", 1, -1, 1 )
strVeri=replace(strVeri, " delete " , "", 1, -1, 1 )
strVeri=replace(strVeri, "--" , "", 1, -1, 1 )
strVeri=replace(strVeri, " = " , "", 1, -1, 1 )
strVeri=replace(strVeri, " or " , "", 1, -1, 1 )
strVeri=replace(strVeri, " and " , "", 1, -1, 1 )
htmlTemizle = strVeri
End Function
%>
şimdi tekrar örneği ele alalım:
<%
degisken =" bu deneme bir yazıdır. bu da html kodudur -- <br> ' gibi karakterler"
response.write(htmlTemizle (degisken))
%>
çıktı: bu deneme bir yazıdır. bu da html kodudur
gibi karakterler
gibi karakterler
Şimdi oldu.
Bu şekilde hem html kodlarını ayıkladık hem de zararlı sql saldırılarına karşı da veritabanımızı güvene aldık.
Not: Bu yazı sadece bilgi amaçlıdır.
Hiç yorum yok:
Yorum Gönder