从我的前任接收一些代码,我发现了一个使用Like运算符的查询:
SELECT*FROM供应商WHERE supplier_name喜欢'%'+ name +%';
试图避免SQL注入问题和参数化这个但我不太确定如何实现.有什么建议 ?
请注意,我需要一个经典ADO.NET的解决方案 - 我真的没有将这些代码转换为类似LINQ的东西.
试试这个:
var query = "select * from foo where name like @searchterm"; using (var command = new SqlCommand(query, connection)) { command.Parameters.AddWithValue("@searchterm", String.Format("%{0}%", searchTerm)); var result = command.ExecuteReader(); }
该框架将自动处理引用问题.
只需参数化您的查询:
SELECT * FROM suppliers WHERE supplier_name like '%' + @name + '%'
现在,您可以将"name"变量传递给@name参数,查询将在没有任何注入攻击危险的情况下执行.即使你传递了类似"'或者真实 - "的东西,它仍然可以正常工作.