1

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

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

例如

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

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

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

使用@dbName;

选择 * 从 @table

打开对称密钥@keyName

ETC

4

2 回答 2

7

使用绑定参数:

SqlCommand cmd = new SqlCommand(myQuery, conn);
cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 10, lastName);
于 2009-03-02T15:01:18.730 回答
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";
于 2009-03-02T15:01:30.853 回答