我对此情况有疑问。
我在存储过程中有这样的查询:
SELECT column1, column2 FROM table1 WHERE column1 like '%' + @column1 + '%'
我的问题是,这容易受到SQL注入的攻击吗?我需要将其更改为以下内容吗?(?)
declare @column1Like nvarchar(200); @column1Like = '%' + @column1 + '%' SELECT column1, column2 FROM table1 WHERE column1 like @column1Like
快速的答案是不。为了易于进行SQL注入,必须使用动态SQL执行。
这 将很容易受到攻击:
EXECUTE ('SELECT column1, column2 FROM table1 WHERE column1 like ' + @column1Like);
这也意味着这两个示例之间没有真正的区别(至少从安全角度而言)。