2009-03-02 27 views
1

MS SQL 2005 için C# derlemesinde bir derleme oluşturuyorum. Bu derleme saklı yordam oluşturur ve saklı yordama geçirilen parametrelere dayanarak dinamik bir sorgu çalıştırır.C# Montaj Enjeksiyon Kontrolü

SQL enjeksiyonunu önlemek için C# içinde basit bir işlev var mı? Bu soru standart sorgu için cevap ... ama kontrol enjeksiyon için C# kullanabilir ne gerçekten dinamik sorgu oluşturma etrafında bir yolu yoktur durumlarda edildi

string myQuery = "SELECT * FROM dbo.MyTable WHERE lastName = '" + injectionCheck(arg1) + "'"; 

Örneğin

? Örneğin

bu muhtemelen alışkanlık iş:

@dbName kullanarak;

SEÇ * @ tablo

AÇIK SİMETRİK ANAHTAR @keyName

vb

cevap

7

Kullanım bağlı parametreler GELEN:

SqlCommand cmd = new SqlCommand(myQuery, conn); 
cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 10, lastName); 
+0

Bu, standart sorgular üzerinde çalışır, ancak tablo adı veya bu yöntemin çalışmadığı başka bir durum için kullanmak zorunda kalsaydım ne olurdu? –

3

parametreler kullanın ....

(Bu zaten yayınlanmıştır)

string myQuery = "SELECT * FROM myTable WHERE lastname = @p_name"; 

SqlCommand cmd = new SqlCommand(); 
cmd.CommandText = myQuery; 
cmd.Parameters.Add ("@p_name", SqlDbType.Varchar).Value = "melp";