我正在使用C#为MS SQL 2005创建一个程序集。这个程序集创建一个存储过程,并根据传递给存储过程的参数运行动态查询。

C#中是否有一个简单的函数来阻止SQL注入?

例如

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

标准查询回答了这个问题......但是在无法构建真正动态查询的情况下,我可以在C#中使用哪些来进行注入检查?

例如,这些可能不起作用:

使用@dbName;

SELECT * FROM @table

OPEN SYMMETRIC KEY @keyName

有帮助吗?

解决方案

使用绑定参数:

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

其他提示

使用参数......

(这已经经常发布)

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";
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top