Jump to content

ASP'de Güvenlik


Recommended Posts

Yazan : voltigore

SQL injection Koruma

ASP kodlarında en çok tehlikeye neden olan ve SQL INJECTION olarak tabir edilen güvenlik sorununu aşağıda vermiş olduğum örnek kod yardımıyla çok basit bir şekilde çözebilirsiniz.

Örnek olarak link.asp adlı bir sayfanızın olduğunu düşünelim. Link.asp sayfasının içinden Link_Guncelle.asp?ID=1 şeklinde bir gidiş olsun.Eğer siz aşağıdaki kodu link_guncelle.aspdeki request.querystring kısmınıza koymazsanız. Kötü niyetli kişiler karakteri ile SQL cümlenizi istedikleri yönde kullanabilirler.

Sizin koymuş olduğunuz kod şu şekilde ise; ID = REQUEST.QUERYSTRING("ID" ) bu kodu aşağıda verdiğim şekilde değiştirin:

ID = REQUEST.QUERYSTRING("ID" ) 
IF Not IsNumeric(REQUEST.QUERYSTRING("ID" ) ) THEN
response.write "Lütfen Geçerli bir ID numarası girin."
response.end
END IF
[/CODE]

veya ID = REQUEST.QUERYSTRING("ID" ) uygulanan ,<,> gibi zararlı karakterleri koruyup güvenli bir sistem de yapabilirisiniz.(Bu yöntem daha güvenlidir )Aşağıda yeşil renkte verdiğim kodları sayfanın en başına ekleyin ve Ban.asp diye IP banlayan bir sayfa oluşturun.

[CODE]<%
////////////////////
// Ayıkla
////////////////////
function suz(veri )
veri = Replace (veri ,"","[BAN]",1,-1,1 )
veri = Replace (veri ,"=","[BAN]",1,-1,1 )
veri = Replace (veri ,"&","[BAN]",1,-1,1 )
veri = Replace (veri ,"%","[BAN]",1,-1,1 )
veri = Replace (veri ,"!","[BAN]",1,-1,1 )
veri = Replace (veri ,"#","[BAN]",1,-1,1 )
veri = Replace (veri ,"<","[BAN]",1,-1,1 )
veri = Replace (veri ,">","[BAN]",1,-1,1 )
veri = Replace (veri ,"*","[BAN]",1,-1,1 )
veri = Replace (veri ,"/","[BAN]",1,-1,1 )
veri = Replace (veri ,"\","[BAN]",1,-1,1 )
veri = Replace (veri ,"And","[BAN]",1,-1,1 )
veri = Replace (veri ,"","[BAN]",1,-1,1 )
veri = Replace (veri ,"Chr(34 )","[BAN]",1,-1,1 )
veri = Replace (veri ,"Chr(39 )","[BAN]",1,-1,1 )
IF InStr(1,veri,"[BAN]",1 ) Then
Response.Redirect "Ban.asp"
End IF
suz=veri
end function
%>[/CODE]

Sizin koymuş olduğunuz kod şu şekilde ise; ID = REQUEST.QUERYSTRING("ID" ) bu kodu aşağıda verdiğim şekilde değiştirin:

[CODE]
ID = suz(REQUEST.QUERYSTRING("ID" ) )[/CODE]

Burda saldırgan Link_Guncelle.asp?ID=1update gibi bir kod yazarsa sistem bunu boş değere çevirecek,ve [bAN] değeri okutacaktır.Eğer satırda

[bAN] değeri varsa sistem otomatik olarak Ban.asp sayfasına yönlenecektir.Burda da IP banlanacaktır.Saldırgan istediğini yapamamış ve zor duruma düşecektir.

[b]Proxy İle Giriş Yasaklama [/b]

Saldırganlar IP leri banlansa bile proxy kullanarak sitelere girebilirler ve saldırılarını süldürebilirler.Fakat siz proxy girişini yasaklarsanız saldırgan proxy ile sisteme giriş yapamaz.Aşağıda verdiğim kodu sayfanın başına yapıştırın.

[CODE]<%
orjip = Request.serverVariables("REMOTE_ADDR" )
proxip = Request.ServerVariables("HTTP_VIA" )

IF Not orjip = proxip Then
response.redirect "ban.asp"
Response.END
END IF
%>
[/CODE]

Burada saldırgan proxy kullanırsa sistem onu anlayacak ve daha önceden oluşturmuş olduğunuz ban.asp sayfasına yönlendirecek.ban.asp sayfasında da saldırganın IP adresi banlanacak.Bu durumda saldırgan yavaş yavaş pes etmeye başlayacaktır.

[b]Bot Koruma [/b]

Bot koruma; DDOS,Flood,Nuke programlarından sisteme girişi engelleyen kodlardır.Bu sistem tamamen benim tarafımdan yazılmıştır.Sistemin çalışma mantığı, siteye bağlanan programların agent değerlerini alır ve kendi listesindekilerle karşılaştırır.Eğer değerler uyuşuyorsa ban.asp sayfasına yönlenir ve IP banlanır.Kodu sayfanın başına yapıştırın.

[CODE]<%

Dim suz(21 )
// PROGRAMLAR
suz(0 ) = "Wget"
suz(1 ) = "EmailSiphon"
suz(2 ) = "WebZip"
suz(3 ) = "MSProxy/2.0"
suz(4 ) = "EmailWolf"
suz(5 ) = "webbandit"
suz(6 ) = "MS FrontPage"
//DENYO LAUNCH KORUMA SATIRLARI
suz(7 ) = "Nightmare"
suz(8 ) = "Denyo"
suz(9 ) = "HolyOne"
suz(10 ) = "Tahribat"
suz(11 ) = "Launch"
suz(12 ) = "Denyo Launch"
//ANTIRUS,DDOS,SYNDOS,NUKE KORUMA SATIRLARI
suz(13 ) = "Antirus"
suz(14 ) = "AventGrup"
suz(15 ) = "Robot"
suz(16 ) = "DDos"
suz(17 ) = "Flood"
suz(18 ) = "SYNDos"
suz(19 ) = "VTJBomber"
suz(20 ) = "Vai-Te Ja"
suz(21 ) = "Packet Storm"
[/CODE]

Değişkenleri bildir

Dim user_agent, host, document, referrer, cezaver

[b]Kullanıcı bilgilerini getir [/b]

[CODE]user_agent = Request.ServerVariables("HTTP_USER_AGENT" )
host = Request.ServerVariables("REMOTE_ADDR" )
document = Request.ServerVariables("SERVER_NAME" )
referrer = Request.ServerVariables("HTTP_REFERER" ) [/CODE]

[b]Kullanıcı bilgilerini kontrol et [/b]

[CODE]cezaver = 0
If InStr(user_agent, suz(0 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(1 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(2 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(3 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(4 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(5 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(6 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(7 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(8 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(9 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(10 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(11 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(12 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(13 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(14 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(15 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(16 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(17 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(18 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(19 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(20 ) ) > -1 Then cezaver = 1
If InStr(user_agent, suz(21 ) ) > -1 Then cezaver = 1

If cezaver = 1 Then
Sayfayi yönlendir...
Response.Redirect "ban.asp"

End If %>[/CODE]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...