17 Ekim 2011 Pazartesi

Zararlı kodları temizlemek fonksiyonu, html kodları temizlemek

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. 

Hiç yorum yok:

Yorum Gönder