[Beyaz Tahribat] Asp"De Güvenlik
-
Öncelikle web sitenizde üyelerin yorum yapabileceği form yada ziyaretçi defteri hazırlayacaksanız html kodlarını pasif hale getirmeniz gerekir.Çünkü bazı denyolar js kodları sokarak saçma sapan şeyler yapabilir örn.
alert ("bu site heyklendi") diyebilr.Bu yüzden formdan gelen bilgideki html kodlarını pasifleştireliKOD:
form = TRIM(Server.HTMLEncode(request.form("form")))ne yaptık burda Server.HTMLEncode ile html kodlarını engelledik TRIM ile de forumun sağındaki ve solundaki boşlukları temizledik.
Bu yolu replance kullanarakya yapabiliriz o da $öyle olucak
KOD:
form = replace(form, "<", "& lt;")
form = replace(form, ">", "& qt;")burda ise < ve > karakterlerini engelledik bunu daha da genişletebiliriz örn <script> engelleyebiliriz.
Başka bir yöntem ise yine replance kullanarak bir function yazmaktırKOD:
Function cevir(form)
form = Replace(form,"<","& lt;", 1, -1)
form = Replace(form,">","& qt;", 1, -1)
cevir = form
End Function
form = cevir(request.form("form"))
örenkeleri çoğaltabiliriz tabi değerleri boşa da eştitleyebiliriz.Anladınz sanırım.Bir de sql injeksiyon açıkları var.Giriş formuna 'or' yazarak giriş yapabiliriz bunu da replance veya function ile ' karakterini engelleyerek yapabiliriz.$öyle olucak ;
KOD:
form = replace(form, "'", "")
burda ' karakterini boşa eşitledik yani 'or' yazınca bize or diye gelecek.Eğer bir giriş formu hazırlıyorsanız = yerine <> karakterini kullanmanızı tavsiye ederim
a=b >>> burda a b ye eşittir deriz
a<>b >>> burda ise a b ye eşit değilmidir deriz.
o zaman a=b eşit not a<>b olur
Örn.
KOD:
a=1
b=2
if a=b then
response.write "a ve b eşitttir"
elseif not a<>b then
response.write "a ve b eşittir"
end if
yukarıda anlattığım gibi a=b ve not a<>b eşittir. (İF ELSE olayını bilmeyenler forumda arama yapsınlar yine floxxy nin yaptıqı beyaz tahribat projesi içinde bir döküman var )
Siz bir querystring'i işlettiğiniz sayfada aldığınız querystring'i kontrol etmezseniz ve kişi '; drop table tablo gibi bir komut yazarsa SQL komutumuz olmadığı halde bu kodu işletir ve o tablo'nun içindeki verilerin tamamını uçurur.
Bu olayıda replance ile engelleyebiliriz.
Örneğin ID no alıyorsanız kod $u $ekilde olacaktır
KOD:
if not ISNumeric(form) THEN
response.end
end if
yani id no sayı değilse işlemi durdur dedik
yada function kullanarak yapılmış genelde kullanılan şöyle bir şey var ;
KOD:
function security(data)
data = Replace (data ,"`","",1,-1,1)
data = Replace (data ,"=","",1,-1,1)
data = Replace (data ,"&","",1,-1,1)
data = Replace (data ,"%","",1,-1,1)
data = Replace (data ,"!","",1,-1,1)
data = Replace (data ,"#","",1,-1,1)
data = Replace (data ,"<","",1,-1,1)
data = Replace (data ,">","",1,-1,1)
data = Replace (data ,"*","",1,-1,1)
data = Replace (data ,"/","",1,-1,1)
data = Replace (data ,"\","",1,-1,1)
data = Replace (data ,"And","",1,-1,1)
data = Replace (data ,"'","",1,-1,1)
data = Replace (data ,"Chr(34)","",1,-1,1)
data = Replace (data ,"Chr(39)","",1,-1,1)
security=data
end function
form = security(request.querystring("form"))burda bir çok zararlı karakteri engelledik bunu da kullanabilirsiniz
Üyelik sistemi tam olarak hazırlanmış http://www.tahribat.com/forumdisplayfolder.asp?highlight=asp%20üyelik%20sistemi&folderid=48438 sayfasını inceleyebilirsiniz.
Benim aklıma gelenler bu kadar.Eğer aklınıza başka bir şey gelirse pm atın veya konuya cevap yazın konuyu genişletelim ;) -
ha birde bilmem farkettinizmi tbt'de de ' yazınca karşı tarafa " diye çıkıyor XD
-
http://www.tahribat.com/forumdisplayfolder.asp?highlight=&folderid=69522
buraya ekleseydin keşke
-
asp için güvenliği sağlamak nisbeten kolay.
bana kalırsanız, javascriptte güvenliği sağlamak üzerine duralım.
günümüzde bircok sitede tonca javascript kullanılıyor.
bunların cogunun ne gibi dındınılara sebebiyet vereceği hakkında bilgimiz çok az.
konu hakkında bilgisi olanlar paylaşırsa güzel olur.
örn: son zamanlarda kafama takılan bir olay.
ajax kullanıyorum ve veriyi sayfalara ayırmışım, ve bunları javascript:Veriler(1) sayfa javascript:Veriler(2) sayfa diye çağırıyorum.
sorun şurda başlıyor: javascript:veriler(alert('hede hödöö'))
bi örnekte burdan vereyim.
mesela;
javascript:prompt(location.href('index.asp?hodudukbududukk'),'folderid=69543&sayfa=1#682597') gibi;
-
kesinlikle :) js de baya bi kasman lazım ayrıca açık kaynak kodu olduqundan daha da zorlaşıyor
-
Bir de mdb'ye üyelerinizin veya kendi admin panel $ifrenizi md5 sha264 vb. algoritmalar ile $ifreleyebilirsiniz.Bu sayede db'yi indirseler bile biraz uqraştırıcaz eğer 7-8 haneden fazlaysa baya bi uqraşıcaklardır.gerekli bilgiye : http://www.tahribat.com/forumdisplayfolder.asp?highlight=md5&folderid=46483 adresinden ula$abilirsiniz
ayrıca sayfalara örneğin arama giriş formu vb. gibi yerlere flood koyabilirsiniz.
Örn. formun bulunduğu sayfaya şu kodları ekleyelim
Kod:
session("zaman" )=now( )
if session("gonderim" )="" then
session("gonderim" ) = 1
else
session("gonderim" ) = session("gonderim" ) + 1
end if
Burada session kullandık bilmeyenler Foxxly nin hazırladığı Beyaz tahribat içinde yer alan session nesnesini okuyabilirler (Link : http://www.tahribat.com/forumdisplayfolder.asp?folderid=69001 )
Session zaman şu ana eşittledik.
Eğer sayfaa yeni girmişse yani gönderim 0 ise 1 olsun 2 ve üstü girişinde yani bi daha giriş yapmaya çalıştığında gonderim 1 artsın dedik buraya kadar fazla bir şey yok.
örn giris.asp kaydet.asp vs. işlemin yapıldığı sayfaya ise şunları ekleyelim
Kod:
deger = datediff("s",session("zaman" ),now )
If session("gonderim" ) > 5 AND DEGER < 60 then
Response.write 60-deger & " sn. bekle. dolaş gel XD"
Else
'İşlemler olsun burdada
end if
Burda da 60 sn. içinde 5 kere giriş yaptıysa 60 sn. bekletiyorz XDXD
Neyse bir de Proxy olayı var.Giriş için proxy yi engellemek isterseniz de $öyle yapın
Kod:
orjip = Request.serverVariables("REMOTE_ADDR") 'sizin ipniz
proxip = Request.ServerVariables("HTTP_VIA") 'proxy ipniz
'o zaman şöyle yapalm XD
if orjip<>proxip then
'Site içeriği
else
response.write "proxy haa Xd"
end if
veya orjip=proxip de diyebilirdiniz o da şöyle olurduKod:
orjip = Request.serverVariables("REMOTE_ADDR") 'sizin ipniz
proxip = Request.ServerVariables("HTTP_VIA") 'proxy ipniz
'o zaman şöyle yapalm XD
if orjip=proxip then
response.write "proxy haa Xd"
end if
