动态 SQL 是否更容易受到 SQL 注入/黑客攻击?

2023-12-13

动态 SQL 是否更容易受到 SQL 注入/黑客攻击? 如果有,如何预防?


如果您使用参数而不是字符串连接来指定过滤条件,那么它应该不会受到 Sql 注入的攻击。

例如:

do this:

string sqlQuery = "SELECT * FROM Persons WHERE Persons.Name LIKE @name";

SqlCommand cmd = new SqlCommand ( sqlQuery );
...
cmd.Parameters.Add ("@name", SqlDbType.VarChar).Value = aName + "%";

而不是这个:

   string sqlQuery = "SELECT * FROM Persons WHERE Persons.Name LIKE \'" + aName + "%\'";

第一个示例不易受到 SQL 注入攻击,但第二个示例非常容易受到攻击。

这同样适用于您在存储过程中使用的动态 SQL。 在那里,您可以创建一个也使用参数的动态 sql 语句;然后您应该使用执行动态语句sp_executesql这使您能够指定参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态 SQL 是否更容易受到 SQL 注入/黑客攻击? 的相关文章

随机推荐