动态 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(使用前将#替换为@)