Bir formdan aldığını bilgilerde siteniz için zararlı olan kodlardan temizlemek ve olası sql saldırılarına karşı korumak için aşağıdaki fonksiyonu kullanabilirsiniz.
Ö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 )
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
Ş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.