使用Like运算符在使用Like运算符的SQL查询中避免SQL注入?

Mik*_*keJ 13 ado.net search sql-injection sql-like

从我的前任接收一些代码,我发现了一个使用Like运算符的查询:

SELECT*FROM供应商WHERE supplier_name喜欢'%'+ name +%';

试图避免SQL注入问题和参数化这个但我不太确定如何实现.有什么建议 ?

请注意,我需要一个经典ADO.NET的解决方案 - 我真的没有将这些代码转换为类似LINQ的东西.

cra*_*igb 18

试试这个:

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();
}
Run Code Online (Sandbox Code Playgroud)

该框架将自动处理引用问题.


Mat*_*ton 8

只需参数化您的查询:

SELECT * FROM suppliers WHERE supplier_name like '%' + @name + '%'
Run Code Online (Sandbox Code Playgroud)

现在,您可以将"name"变量传递给@name参数,查询将在没有任何注入攻击危险的情况下执行.即使你传递了类似"'或者真实 - "的东西,它仍然可以正常工作.