REHBERLER ANASAYFA
Bize gönderilen bir çok uygulamada farkettiğimiz bir takım önemli güvenlik
eksiklikleri nedeniyle, yapılan bir çok uygulama kötü niyetli kişiler
tarafından suistimal edilebilmektedir.Bunun önüne geçebilmek için
hazırladığımız bu rehberin sizlere kodlamalarınızda temel olarak almanız
gereken güvenlik önlemlerini öğretebileceğini düşünüyoruz.
1. ADIM:
ASP kodlarında en çok tehlikeye neden olan ve SQL INJECTION olarak tabir
edilen güvenlik sorununu aşağıda vermiş olduğumuz ö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.asp'deki
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ğimiz ş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
2. ADIM:
Bu adımda da sayfalarımızda kullanmış olduğumuz formlardan gelen
verilerde bulunan ' karakterini nasıl
etkisiz hale getirebileceğimizi göreceğiz.
Sayfalarınızda kullandığınız formların işlendiği yani örnek olarak
form.asp'nin bilgileri kaydetmek için yönlenmiş olduğu form_kaydet.asp
dosyasındaki REQUEST.FORM kısımlarını koruma altına almanız
gerekmektedir.Bunu aşağıda yazmış olduğumuz fonksiyon kodu ile çok basit bir
şekilde gerçekleştirebilirsiniz:
Bu fonksiyon kodunu sayfanızın en tepesine koymanız yeterli olacaktır:
Function KarakterTemizle(Veri)
KarakterTemizle = Replace(Veri, "'", "''")
Veri = KarakterTemizle
End Function
Fonksiyon kodunu sayfanıza
yerleştirdikten sonra aşağıda yanlış olan yolu ve doğru olan yolu
görebilirsiniz:
Yanlış olan Hali:
GelenVeri = REQUEST.FORM("GelenVeri")
Doğru hali:
GelenVeri = KarakterTemizle(Request.Form("GelenVeri"))
3. ADIM:
Son olarak bu adımda yine form kutucukları yoluyla kodlarımıza kötü
amaçlı saldırılar yapılmasını engelleyeceğiz.
Yine 2.adımda belirttiğimiz gibi form.asp'den form_kaydet.asp'ye veri
yolladığımız için form_kaydet.asp içerisinde bulunan REQUEST.FORM'ları
aşağıda vermiş olduğumuz fonksiyon ile koruma altına almanız gerekmektedir;
Function KarakterTemizle(Veri)
KarakterTemizle = Replace(Veri, "<", "<")
KarakterTemizle = Replace(Veri, ">", ">")
Veri = KarakterTemizle
End Function
Bu fonksiyonu sayfanızın en tepesine koymanız yeterli
olacaktır.Bundan sonra yapmanız gereken ise
REQUEST.FORM kodlarınızı şu şekilde düzenlemenizdir;
Yanlış olan hali: GelenVeri =
REQUEST.FORM("GelenVeri")
Doğru hali: GelenVeri =
KarakterTemizle(Request.Form("GelenVeri"))
En son olarak ekleyebileceğimiz şey ise gördüğünüz gibi
2. adım ve 3. adımda kullanmış olduğumuz fonksiyonlar birbirine çok
benziyor.Biz her ikisini ayrı ayrı incelemeniz için bir birlerinden ayrı
olarak yazdık.Aşağıda ikisinin birleştirilmiş halini
bulabilirsiniz.Birleştirilmiş halde olan fonksiyonu da yine aynı şekilde
"Doğru hali" olarak belirttiğimiz şekilde kullanabilirsiniz.
Function
KarakterTemizle(Veri)
KarakterTemizle = Replace(Veri, "'", "''")
KarakterTemizle = Replace(Veri, "<", "<")
KarakterTemizle = Replace(Veri, ">", ">")
Veri = KarakterTemizle
End Function
GelenVeri
= KarakterTemizle(Request.Form("GelenVeri")) veya
GelenVeri = KarakterTemizle(Request.Querystring("GelenVeri")) |