Şimdi Ara

LINQ to Entities ve SQL Injection

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
657
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkdaşlar bilindiği üzere SQL sorgularında SQL Injection denilen bir bela var

    Şöyle ki:http://www.unixwiz.net/techtips/sql-injection.html

    Peki

    LINQ to Entities sorgularımızda da bu tip bir bela var mı ?




  • Ayni soruyu google a sorsan nasil yapildigini bile ogrenebilirsin

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Kaygerya kullanıcısına yanıt
    Öyle google aramaya "linq to entities injection" yazmakla olmuyor, adam gibi anlayan birinden bilgi istedim. Akıl verme kardeş varsa çözüm ver tamam !
  • Hazir kod hazir cozum. Var mi boyle bir dunya ekmek elden su golden ogrenmeden calismadan cozum ver cozum demek. Yav he he

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Kaygerya kullanıcısına yanıt
    Ya arkadaşım saçma sapan yanıtların ile kalabalık ettin be, ne hazır kodundan bahsediyorsun sen ?!
    Biz bu işin ustalarından (forumda varsa tabii ki) bilgiler öğrenmek için bu konuyu açtık sen ne yaptın laf salatası, git Allah'ını seversen soğutma insanı forumdan.
    Hazırcı olmayan şahsınız bana googleye yaz önüne çıkan sayfalara bak demedin mi? Hadi selametle

  • Sql injection yapılma şekli şu şekildedir.

    string name = "dh"; // dışarıdan gelen veri

    string sqlSorgusu = "select * from uyeler where username like %" + name + "%";

    şimdi yazılımcı ordan hep düzgün veri geliceğini sanıp böyle bir sorgu yazıp çalıştırabilir, oysa ki oraya "dh --" gibi veride girilebilir girildiğinde "--" zaten parametreden sonrasını comment'e çeviricek sorgu bozulucaktır bu arada sen bunu düşünmediğin için işler iyice çorba olucaktır. (oraya başka sorgularda eklenebilir olacak düşün işte açığı)

    buna en kolay çözüm şu şekildedir (linq işin içine katmıyorum önce mantığı kavramak gerek)

    SqlCommand cmd = new SqlCommand("select * from uyeler where username like @name");
    cmd.Parameters.AddWithValue("@name", name);

    şeklinde eklediğiniz taktirde parametreler belirli işlemlerden geçerek sorguya ekleniyor, bu şekilde injection dan kurtululuyor.

    soruya gelirsek; injection yapıldığı şekile bakarsan string işlemler yüzünden yapılıyor bi nevi. linq da ise yazılım tarafında sqlden bağımsız sorguyu yazıyorsun o yazdığın sorguya göre işlemler yapılıyor arkada, o yüzden hayır yapılamaz.

    not : burda ki önemli nokta sorgunun oluşturulma biçimidir eğer sorguyu string olarak yazmıyorsan bi sıkıntın yok, entity framework kendi sorgusunu oluşturuyor zaten arkada bunlarıda istersen sql'in kendi bi programı vardı hatırlamıyorum tam olarak servera gelen tüm sorguları görebiliyodun ordan

    edit: ekleme



    < Bu mesaj bu kişi tarafından değiştirildi alm.oz -- 25 Kasım 2013; 9:02:00 >




  • Teşekkürler.

    ***

    Evet LINQ to Entities de ADO.net yapısında klasik anlamda SQL Injection tarzı bir olay olmuyor, LINQ her şeyi parametre olarak gönderiyor. Bu bilgiler ihtiyacı olana da faydalı olsun.
  • Arkadaşlar, XSS injection'larına karşın, form veya herhangi elementlerin başına <# Item..... yerine <#: ve Using System.Web.Security yi eklerseniz, (Asp.Net 4.5 için) otomatik olarak çoğu injection lara karşı korunmuş olursunuz...
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.