2009-03-02 59 views
1

我在C#中为MS SQL 2005创建了一个程序集。此程序集创建一个存储过程,并根据传入存储过程的参数运行动态查询。C#汇编注入检查

在C#中有一个简单的函数来防止SQL注入吗?

例如

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

这个问题得到回答的标准查询...但在那里是围绕建设什么我可以在C#中使用注射检查忠实地动态查询没有办法的情况呢?

例如,这些可能不会工作:

using @dbName;

SELECT * FROM @table

OPEN SYMMETRIC KEY @keyName

回答

7

使用绑定参数:

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

这将适用于标准查询,但如果必须将它用于表名或其他此方法无效的情况会怎样? – 2009-03-02 15:23:27

3

使用参数....

(这已经经常发布)

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";