Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

SQL Injection

Konu, 'ASP' kısmında asp13 tarafından paylaşıldı.

  1. asp13

    asp13 Üye

    Kayıt:
    14 Haziran 2008
    Mesajlar:
    78
    Beğenilen Mesajlar:
    0
    Asp için geliştirdiğim siteye SQL Injection koruması yapmak istiyorum.Sitem bitti ama sql injection açıkları var.Kapsamlı dökümanı veya kodu veya önerilerinizi bekliyorum.Detaylı bir açıklama gelirse sevinirim...
     
  2. Raiden

    Raiden self.life.start()

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    4,392
    Beğenilen Mesajlar:
    0
    Şehir:
    /home/Raiden
    asp bilmem lakin şu yollar izlenebilir.

    1- url den alınan ID degerlerin isNumeric fonksiyonundan geçirilerek sorguya dahil edilmesi
    2- sql için kullanılan özel karakterlerin yine dışardan veri alındığında escape edilmesi.
     
  3. demo

    demo Aktif Üye

    Kayıt:
    28 Eylül 2006
    Mesajlar:
    372
    Beğenilen Mesajlar:
    0
    Meslek:
    Çalış(a)mıyor
    Şehir:
    34770
  4. merakli

    merakli Daimi Üye

    Kayıt:
    28 Şubat 2007
    Mesajlar:
    2,004
    Beğenilen Mesajlar:
    1
    Ben olaya tersten yönden yaklaşıyorum.

    Kullanılmasını istediğim karakterleri bir değişkene atıyorum ve formdan gelen verileri bu süzgeçten geçiriyorum.
    Bunların dışında bir karakter var ise formu geri gönderiyorum..

    PHP:
    dim strGecerliKarakterler
    strGecerliKarakterler 
    "ABCÇDEFGĞHİIJKLMNOÖPQRSŞTUÜVWXYZabcçdefgğhıijklmnoöpqrsştuüvwxyz0123456789+/? .:;()-[]"&vbTab vbCrlf
     
  5. demo

    demo Aktif Üye

    Kayıt:
    28 Eylül 2006
    Mesajlar:
    372
    Beğenilen Mesajlar:
    0
    Meslek:
    Çalış(a)mıyor
    Şehir:
    34770
    Ama bu şekilde yapmanız performansı düşürebilir. Zararlı karakter sayısı daha az olduğu için, süzme işlemi daha çabuk bitecektir.
    Ayrıca kaydedilecek bir metinde, örneğin, sql sorgularında zararlı olan ' karakterinin ascii kod karşılığına çevrilerek kaydedilmesi, daha sonra metne ulaşıldığında metnin bozulmamış olmasınada yarayacaktır. Geniş bir örnek olarak forumlarda mesaj yazarken yapılan işlemi verebiliriz.
     
  6. merakli

    merakli Daimi Üye

    Kayıt:
    28 Şubat 2007
    Mesajlar:
    2,004
    Beğenilen Mesajlar:
    1
    :) hangi performansı?
    bir form sayfasından alınan bilgilerin sayısı kaç olabilir ve bu alanlardan kaç tanesi bu süzgeçe tabi olabilir?
    ad soyad yazılacak alanlarda bu süzgeçten geçirilmez onlara yapılacak işlem sınrılanan örneğin 30 karakterden fazla mı 2 karakterden az mı şeklinde bakılır. 30 karakterden az olan ve tırnak işaretide kaldırılmış bir veri ile ne işlem yapılabilir ki?

    Sonuçta bir formda bu kontrole tabi tutulacak alanların sayısı 2 i geçmez genelde 1 ile sınırlıdır.
    Bu kadar bir alandan yazılan verilerin üzerinde bu işlemi yapmanın performans açısından değerlendirmek konuya vakıf olmamakla ilişkilendirilebilri..

    Kaldıki bir formu aynı anda onlarca kişi doldurmaz doldursa da sunucun adan gibi olduktan sonra hiç bir şey olmaz. Godaddy i zorlamaz ;)
     
  7. demo

    demo Aktif Üye

    Kayıt:
    28 Eylül 2006
    Mesajlar:
    372
    Beğenilen Mesajlar:
    0
    Meslek:
    Çalış(a)mıyor
    Şehir:
    34770
    :) Peki, performansı dikkate almayalım (genel kullanımlar için; özel kullanımlarda bir formdan 10-15 sayfalık veri post ettiğim, veritabanı transferi yaptığım oluyor, her ne kadar konuya vakıf olamayan biri olsamda :)), sql injection için zararlı karakterleri metni/veriyi gösterirken ne şekilde gösteriyorsunuz? Örneğin:

    <script>window.location.href='http://forum.ceviz.net/';</script>

    şeklindeki bir kodu göstermek için nasıl bir yol uyguluyorsunuz?
     
  8. merakli

    merakli Daimi Üye

    Kayıt:
    28 Şubat 2007
    Mesajlar:
    2,004
    Beğenilen Mesajlar:
    1

    30 karakterden büyük olduğu için (yazdığınız kod 64 karakter...) o işleme bile gerek kalmadan form işlem yapmayacaktır. Yukarıda belirtmiştim...
     
  9. demo

    demo Aktif Üye

    Kayıt:
    28 Eylül 2006
    Mesajlar:
    372
    Beğenilen Mesajlar:
    0
    Meslek:
    Çalış(a)mıyor
    Şehir:
    34770
    Öncelikle internette form alanlarının sadece ad-soyad olmadığını hatırlatayım.
    Bu kodu mesaj içinde ziyaretçilerinize göstermeniz gerekli. Bu durumda ne yapacaksınız. Veya kodun arkasına 100 karakter daha eklendi, ne olacak.
    <, ', > karakterlerini zararlı olduğu için (daha doğrusu siz belirlediğiniz karakterler dışındakileri geri çevirdiğiniz için) tüm mesajı/veriyi geri çevirmiş olacaksınız. Oysa önerdiğim işlemde ' karakteri veritabanına ' olarak kaydedilecek (tabii diğer zararlı olabilecek karakterlerde kendi ascii karşılıkları ile) ve hem zararı önlenmiş hem de mesaj/veri bozulmamış olacaktır.
    Karakter sayarak mı konuya vakıf olunuyor acaba???:)
     
  10. merakli

    merakli Daimi Üye

    Kayıt:
    28 Şubat 2007
    Mesajlar:
    2,004
    Beğenilen Mesajlar:
    1
    Bildiğin gibi yapmakla özgürsün kimse seni kısıtlamaz.
     
  11. nbakolik

    nbakolik Aktif Üye

    Kayıt:
    8 Nisan 2007
    Mesajlar:
    480
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Geliştirici
    Şehir:
    Denizli
    Kullanılan yere göre değişir bu ama karakterleri ascii değerlerle yazdırmak en mantıklısıdır genelde. Bazen direk temizlemek de uygun olabilir. Ben genelde ' işaretini "& #39;" şeklinde yazdırırım bu şekilde hem sorguda sorun çıkarmaz hemde ekranda göstermek için ayrı bir çevrim yapmak zorunda kalmam benzer şeyler özel sql terimleri içinde yapılabilir SELECT terimini "& #83;ELECT" şeklinde çevirip yazdırabiliriz... Bilinen ve en çok kullanılan ayrıca en çok zarar verebilecek SQL injectionlara karşı önlem almak yeterlidir. Gereksiz alanları sorgularda çağırmamak önemlidir. üye profili sayfasında Select * şeklinde kullandığımız bir sql deyimini kötü niyetli kişiler bir şekilde kendilerine çevirerek şifreleri çalabilirler... Sadece giriş formları değil sitenin her yeri bunun için kullanılabilir.

    Not: & ve # karakterleri arasında boşluk yoktur. Kodların belli olabilmesi için o şekilde yazdım. Boşluksuz şekilde yazıldığında sayfada karakter karşılığı gözükecektir...
     
    Son düzenleme yönetici tarafından yapıldı: 8 Temmuz 2008
  12. vampire

    vampire Software Devloper

    Kayıt:
    1 Haziran 2004
    Mesajlar:
    704
    Beğenilen Mesajlar:
    0
    Meslek:
    Berber Çıraklığı ...
    Şehir:
    Plüton
  13. asp13

    asp13 Üye

    Kayıt:
    14 Haziran 2008
    Mesajlar:
    78
    Beğenilen Mesajlar:
    0
    teşekkür

    Cevaplar için teşekkürler.