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)
该框架将自动处理引用问题.
只需参数化您的查询:
SELECT * FROM suppliers WHERE supplier_name like '%' + @name + '%'
Run Code Online (Sandbox Code Playgroud)
现在,您可以将"name"变量传递给@name参数,查询将在没有任何注入攻击危险的情况下执行.即使你传递了类似"'或者真实 - "的东西,它仍然可以正常工作.