Bilginin Adresi Ana Sayfa
Forum Anasayfası Forum Anasayfası > Bilgisayar Güvenliği / Computer Security > Güvenlik / Security Makaleleri
  Aktif Konular Aktif Konular RSS - Adım Adım SQL Enjeksiyonunu Güvenliği
  SSS SSS  Forumu Ara   Events   Kayıt Ol Kayıt Ol  GiriÅŸ GiriÅŸ

Adım Adım SQL Enjeksiyonunu Güvenliği

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
megabros Açılır Kutu Gör
Security Professional
Security Professional
Simge

Kayıt Tarihi: 08-06-2009
Konum: Turkey
Status: Aktif DeÄŸil
Points: 752
Mesaj Seçenekleri Mesaj Seçenekleri   Thanks (0) Thanks(0)   Alıntı megabros Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Adım Adım SQL Enjeksiyonunu Güvenliği
    Gönderim Zamanı: 23-08-2009 Saat 22:50

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”))

Saygılar..
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu Gör



Bu Sayfa 0.173 Saniyede Yüklendi.