THT DUYURU

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.

chat
Seçenekler

ASP Scriptlerinde Güvenlik

tgrl5000 - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
05/2013
Nereden:
False Vacuum
Mesajlar:
1.243
Konular:
111
Teşekkür (Etti):
1021
Teşekkür (Aldı):
463
Ticaret:
(0) %
24-05-2014 18:52
#1
ASP Scriptlerinde Güvenlik
Bazı internet kullanıcıları , Database'de kayıtlı bilgilerinizi öğrenme 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ı anlatmaktadır.

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ı

Kod:
<form method="POST" action="processform.asp">
<input type="hidden" name="uyeid="<%=Rs("uyeid")%>">
Yeni Mail : <input type="text" name="Email">
<input type="submit">
</form>
Kod:
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.

Kod:
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 nereden 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.

Kod:
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 Kontrolü

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.

Kod:
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. Bunu da aşağıda belirtilen şekilde yapıyoruz.

Herhangi bir dizin yolu, dosya yolu belirtmesini engellemek için "../", Db ler ile 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.

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

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler