SORU
8 Mart 2010, PAZARTESİ


C basit SQL sorguları kaçmayı nasıl# SQL Server için

SQL dize beklediği bir API kullanıyorum. Ben bir kullanıcı giriş, kaçış ve API iletin. Kullanıcı giriş oldukça basit. Sütun değerlerini sorar. Bunun gibi

string name = userInput.Value;

O zaman ben bir SQL sorgu oluşturmak:

string sql = string.Format("SELECT * FROM SOME_TABLE WHERE Name = '{0}'",
                           name.replace("'", "''"));

Bu yeterince güvenli mi? Yok, sütun değerleri güvenli hale getiren basit bir kütüphane işlevi vardır: değil

string sql = string.Format("SELECT * FROM SOME_TABLE WHERE Name = '{0}'",
                           SqlSafeColumnValue(name));

API veritabanı olarak SQL Server kullanmaktadır.

CEVAP
8 Mart 2010, PAZARTESİ


SqlParameter kullanarak bir seçenek değil, sadece '" (iki tek tırnak, çift tırnak değil) dize hazır bilgi. değiştir beri İşte bu kadar.

-Downvoters: tekrar oku soruyu ilk satırı. "Parametreler" da içgüdüsel tepkim.

EDİT: Evet, SQL enjeksiyon saldırıları hakkında biliyorum. Eğer bu alıntı o savunmasız olduğunu düşünüyorsanız, lütfen çalışan bir counterexample sağlamak. Değil bence.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • graham025

    graham025

    25 NİSAN 2006
  • parlophone

    parlophone

    28 ŞUBAT 2006
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011