-
03-07-2019 - |
题
我正在使用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";
不隶属于 StackOverflow