ana sayfa hakkında forum (yeni) rss takibi reklam yerleşimi iletişim giriş

İçerik Kategorileri

  1. Active Server Pages
    1. Temel Konular [13]
    2. Genel İçerikler [12]
    3. Nesne Kütüphanesi [0]
    4. Form Elemanları [4]
    5. Döngü İfadeleri [3]
    6. Veritabanı İşlemleri [7]
    7. Fonksiyonlar [2]
    8. Hatalar ve Çözümleri [16]
  2. ASP Hızlı Referans
    1. TextStream Nesnesi [7]
    2. Response Nesnesi [1]
    3. Request Nesnesi [1]
    4. Application Nesnesi [1]
    5. Session Nesnesi [4]
    6. Server Nesnesi [0]
    7. FSO Nesnesi [4]
  3. Browser Scripting
    1. VBScript [4]
    2. SQL Sorgulama [4]
  4. MySQL [0]
  5. Uygulamalar
    1. Hazır Fonksiyonlar [3]
    2. Hazır Kodlar [9]
    3. Script Algoritmaları [3]
    4. Script Geliştiriyoruz [2]

Sitede Ara


Hosting Sponsorumuz

Şub

26

Sql Enjeksiyonu hakkında bilgiler ve önlemler

Genel İçerikler4 yorum2569 izlenimfatiherikli

Veritabanından verilerimizi çekerken sql sorgulama dilini kullanıyoruz. Peki önlemini almadıktan sonra bu olay ne kadar güvenli olabilir ?


Sql enjection'un kullanılabilmesi için ziyaretçi & tarayıcı  tarafından veri girilebilen yada bilgi verilebilen bir sayfa olması gerekmektedir.
Örneğin üyelik sistemleri, yada sayfa adresinde bulunan verinin kimlik'leri vb...

Eğer sayfa.asp?id=5 vb. adresinden değer alıp sonra bu değer ile veritabanından veri çekiyorsanız ve sql enjeksiyonu önlemini almamışsanız sitenizde açık var demektir.
Örnek:

Farzedelim sayfa.asp?id=4 sayfasındayız.

<%
    id=request.querystring("id") ' sayfa adresinden id çekiliyor.
        Sql="select * from kayitlar where id="&id&""    
    Set rs=baglanti.execute(sql)
%>


Bu şekilde veritabanından id'si 4 olan kaydı seçer. Çünkü sayfa.asp?id=4 konumundayız. Yani id'yi sayfa adresinden çekiyor. Biz sayfa adresinde id stringine başka bir sql kodu yazarsak onu alır.
Mesela
sayfa.asp?id=4 or id=5 or id=6
vb... Bu sql kodunu veritabanında çalıştırır. Bu sql kodu zararsızdır ama kullanıcılar zararlı sql kodları girecektirler. Burada o kodları veremiyoruz.

Önlemi:

<%
   id=request.querystring("id") ' sayfa adresinden id çekiliyor.
    if isnumeric(id)=false then ' id numerik değilse
        Response.Write "Güvenlik Sistemi Devrede"
    Else 'değilse
        Sql="select * from kayitlar where id="&id&""    
        Set rs=baglanti.execute(sql)
    End if
%>


Bu şekilde sadece sayısal bir değer girmesini sağlarız.
Eğer değer sayısal değilse işlemi durduruyoruz.

şimdide üyelik girişlerine bakalım.
Genelde iki adet kutucuk bulunur. Kullanıcı adı ve şifresi diye.
Girilen bilgiler bir sayfada işletilir. Eğer tabloda bu kullanıcı adına ve şifresine uyan bir veri varsa giriş yaptırırız. Bunuda sql sorgusu ile gerçekleştiririz.

<%
    isim=request.form("isim") 'kullanıdı adı
    sifre=request.form("sifre") 'şifre
        Sql="select * from uyeler where isim='"&isim&"' and sifre='"&sifre&"'"    
    Set rs=baglanti.execute(sql)
%>


Sql sorgusunda kullanıcı adı ve şifresini sorgulatıyoruz. Dikkat ettiyseniz and komutunu kullandık. Yani girilen değere uyan kullanıcı adı ve şifre aramasını sağladık. Eğer or kullansaydık kullanıcı adı veya şifresini aratırdık. Mantıken şifre yanlış olsa bile kullanıcı adı olduğundan giriş yapar. Yada tam tersi şifre doğruyken kullanıcı adı yanlış olursa giriş yapar.

Sanırım or ve and komutun farkını anladık.
Sql sorgusuna değerler kutucuklardan geliyor. Yani biz giriyoruz.
Eğer kutucuğa zararlı bir sql kodu girersek sql sorgusunda çalıştırılır.
Mesela iki kutucuğada 'or' yazarsak and yerine or deyimi çalıştırmış oluruz.
Dolayısıyla giriş yapılır.

Önlemi:
<%
    Function temizle(gelenveri)
      if gelenveri="" then exit function
        gelenveri=replace(gelenveri,"or","")
        gelenveri=replace(gelenveri,"and","")
        gelenveri=replace(gelenveri,"'","")
     temizle=gelenveri
    End Function
%>


Kullanımı:
Verilerimizi çekerken bu fonksiyondan geçmesini sağlayacağız.
<%
    isim=temizle(request.form("isim"))
    sifre=temizle(request.form("sifre"))
%>

Etiketler  :  sql   enjeksiyon   injection   or   and   replace   function  

İçeriği takip etSayfayı YazdırPermalink

4 yorum var

#266.-xyz-06 Temmuz 2007 Cuma

yayınlamanıza gerek yok ama, ya kullanıcı adı orhan ise ve küçük harflerle yazmışsa, or zararlı ama sadece or un bir çok yazılışı var (Or, or, oR, OR, uzunlarda bu seçenek daha da artacak, insert gibi..) bu durumlarda ne olacak? sanırım bu önlemler yeterli değil, bu arada siteniz hem içerik hem de-özellikle tasarım açısından güzel olmuş, tebrikler

#495.-Inan Onder-15 Şubat 2008 Cuma

Sacmalamissin kuculk buyuk harf duyarliligi yok asp'de.. Sirf sallamissin mnkym

#557.-kemal aslan-03 Nisan 2008 Perşembe

bence de or kelimesi girdiğimizde kullanıcı adı orhan ise or kısmını silecek ve sadece han kalıcak. bence sadece ' ,", <, >, gibi karakterleri    engellesek daha iyi olur. Çok güzel bir anlatım teşekkür ederiz.

#575.-Görkem Kösem-17 Nisan 2008 Perşembe

' karakteri temizlenmesi büyük bölümünü ekarte eder zeten
or içinde başında ve sonunda boşluk yada tırnak olan or'un temizlenmesi daha bir düzgün çalışmasını sağlar
gelenveri=replace(gelenveri," or ","")
gelenveri=replace(gelenveri,"'or'","")

yöneticileri tebrik ederim güzel bir site olmuş ilerde iyi bir kaynak olmaya aday


Bu içeriğe yorum yazın

BBCode ve Emotions desteği aktif. Yorumunuz onaylandıktan sonra gösterilecektir.

Bu yazı ile benzer içeriğe sahip olabilecek yazılar

  1. SQL'dan Örneklemeler ve Özellikler
  2. Veritabanı Nedir? Neden Önemlidir?
  3. SQL Sorgulama - Select Komutu
  4. Veritabanına Kayıt Ekleme
  5. Veritabanındaki Bilgileri Listeleme
  6. Detaylara Bakabilme
  7. Tablodaki Sütunları Listeletmek
  8. Veritabanında arama yapmak
  9. Sayaç Yapımı
  10. Veritabanına bağlanmak ve veri almak
  11. Where Deyimi
  12. Where Deyimi
  13. Türkçe Karakterleri İngilizce Formata Çevirmek
  14. Karakter Temizleme
  15. Ajax Türkçe Karakter Probleminin Çözümü
  16. Geçersiz Null Kullanımı Hatası
  17. "<" ve ">" Arasındaki Tüm Karakterleri Temizlemek
  18. Karakter Temizleme
  19. Geçersiz Null Kullanımı Hatası
  20. ASP ile Ajax Kullanımı
  21. Fonksiyon Yazımı
  22. Class Kullanımı
  23. "<" ve ">" Arasındaki Tüm Karakterleri Temizlemek

Yazının aktif olduğu kategoriye eklenmiş son yazılar

  1. "<" ve ">" Arasındaki Tüm Karakterleri Temizlemek
  2. Mail List yapımı
  3. Asp ile Sub Kullanımı
  4. ASP ile Ajax Kullanımı
  5. Include Deyimi
  6. Karakter Temizleme
  7. With (Kullanımı) ile Nesnelerin Yönetimi

Aspogren.net web sitesi SiDEnet sunucularından yayınlanmaktadır.

eXTReMe Tracker