İPUCU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

Seçenekler

ASP Script Güvenliği

19-09-2010 15:09
#1
Üyelik tarihi:
05/2010
Nereden:
FF
Mesajlar:
1.861
Teşekkür (Etti):
102
Teşekkür (Aldı):
463
Konular:
572
Ticaret:
(0) %
ASP; Script Güvenligi


Bazi internet kullanıcıları , Database de kayıtlı bilgilerinizi öğreme veya sitenize zarar verme girişiminde bulunabilirler. Bu girişimleri bir nebze olsun engellemek için kullandığınız ASP scriptlerinde bazı noktaları güçlendirerek, Sisteme girişlerini engellemiş olabilirsiniz. Kullanıcılar genellikle; Sisteme karışık bilgiler girerek sistemi yorma ve açık yaratmaktan ibarettir. Bu doküman kısas olarak bu saldırılardan nasıl korunacağınızı anlatıyor.

Request Method Kullanımı

Bazı programcılar script yazımında Request() komutunu kullanırlar ama bu güvenli bir yöntem değildir. Güvenli olmasını sağlamak için REQUEST_METHOD komutunu kullanabiliriz. Bu komut sadece;

• ServerVariables

• QueryString

• Form

• Cookie

• ClientCertificate

Nesneleri ile kullanılabilir.

Herhangi bir form kullanımında kullanılan “Hidden” yani gizli bilgiler, başkaları tarafından değiştirilerek kullanılabilir. Bazı acemileri kandırmak içinse GET yerine POST kullanarak formları taşıyabiliriz, ama bunu da sezen kullanıcılar mutlaka olacaktır. Bu nedenle kısa bir örnek kod vermek istedim.

Form Sayfası

<form method="POST" action="processform.asp">
<input type="hidden" name="uyeid="<%=Rs("uyeid")%>">
Yeni Mail : <input type="text" name="Email">
<input type="submit">
</form>



Processform.asp

strUyeId = Request.Form("uyeid")
strYeniMail = Request.Form("Email")


Buraya kadar gayet güzel ama form sayfasındaki gizli alanı alan kullanıcı bu kodları alıp da HTML derleyicisi kullanarak kendine göre değiştirip istediği bilgiyi sizin processform.asp dosyasına gönderebilir. Ama bunu da engellemek için "REQUEST_METHOD". komutunu kullanacağız. Kullanmamızda ki amaç ise kullanıcının bize gönderdiği bilgiler GET şeklinde gönderirse işlemi durdurmaktır.

Bu komut Request.ServerVariables() standartlarında kullanılır.

If Request.ServerVariables("REQUEST_METHOD") <> "POST" Then
Response.End
End If


Bu kod; Eğer gelen bilgiler "POST" komutu ile geliyorsa devam et, gelmiyorsa işlemi durdur, anlamına geliyor.

Check Referer (Gönderen kontrolü)
Çoğumuz Mynet ve Domaindlx gibi hostlarda kullanılan dosyaları başka bir adresten neden ulaşılamadığını merak ediyoruz, Bu sadece birkaç kod dizisinden ibaret olduğunu öğrenince içim rahatladı. Burada kullanılan ise http protokolünü yeterli seviyede kullanmaktır.

HTTP_REFERER sayfanıza nerden gelindiğini anlatan bir ASP nesnesidir. Bu nesne ile REQUEST_METHOD birbirine yakın nesnelerdir. Şimdi yazacağımız kod dizisi ise, FORM ve QueryString nesneleri gelen bilgilerin kendi alan adınızdan mı yoksa başka bir alan adından mı geldiğini kontrol edecektir.

Public Function CheckReferer()

On Error Resume Next

Dim strHost, strReferer, blnCheckReferer

strHost = Request.ServerVariables("HTTP_HOST")
strReferer = Request.ServerVariables("HTTP_REFERER")

strReferer = Right(strReferer, Len(strReferer) - (InStr(1, strReferer, "://") + 2))
strReferer = Left(strReferer, InStr(1, strReferer, "/") - 1)

If strReferer = strHost Then
blnCheckReferer = True
Else
blnCheckReferer = False
End If

CheckReferer = blnCheckReferer

End Function


Gelen Bilgi Kontrölü
Formlarla beraber gelen bilgilere karşılık olarak DB’den bir bilgi istendiği zaman küçük bir bilgi kontrolü yapmak, kolay ve sağlam bir güvenlik koşuludur. Burada yapılan işlem ise formdan gelen bilginin bir sayı olup olmadığını kontrol etmek ve eğer bir sayı değil ise girdiyi 0 yapıp formdan gelen bilgiyi sınırlamaktır..

If strUyeId = "" OR IsNumeric(strUyeId) = False OR strUyeId < 0 Then
strUyeId = 0
End If





Bilgiler korumak için formdan gelen bilgileri düzenlemeye devam ediyoruz. Sıradaki işlem formlarda kullanılan herhangi bir ters işleme neden olabilecek yanlış karakterlerin kontrolünü yapmak. Bunuda aşağıda belirtilen şekilde yapıyoruz. Herhangi bir dizin yolu, dosya yolu belirtmesini engellemek için "../", Dblerle işlem yapılamaması için "--", ";", ve SQL komutları yani "SELECT", "INSERT"<, >"UPDATE", "DELETE", vs. Sonra boşluk ve Tırnak işaretlerinin kontrolünü yapmak gerekir. Ve son olarak HTMLEncode komutu ile formlarda herhangi bir html komutu kullanmalarını engellemektir.

strData = Replace(strData, "../", "")
strData = Replace(strData, "--", "")
strData = Replace(strData, ";", "")
strData = Replace(strData, "", "")
strData = Server.HTMLEncode(strData)


Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı