如果使用参数而不是字符串连接来指定过滤条件,则它不应该容易受到Sql注入的影响.
例如:
做这个:
string sqlQuery = "SELECT * FROM Persons WHERE Persons.Name LIKE @name";
SqlCommand cmd = new SqlCommand ( sqlQuery );
...
cmd.Parameters.Add ("@name", SqlDbType.VarChar).Value = aName + "%";
Run Code Online (Sandbox Code Playgroud)
而不是这个:
string sqlQuery = "SELECT * FROM Persons WHERE Persons.Name LIKE \'" + aName + "%\'";
Run Code Online (Sandbox Code Playgroud)
第一个例子不容易被sql注入,但第二个例子非常容易受到攻击.
这同样适用于您在存储过程中使用的动态SQL.在那里,您可以创建一个使用参数的动态sql语句; 然后,您应该使用动态语句sp_executesql来指定参数.
| 归档时间: |
|
| 查看次数: |
5568 次 |
| 最近记录: |