替代exec sql以避免sql注入是SP_EXECUTESQL?

时间:2011-06-29 06:58:44

标签: sql-server tsql sql-injection

我必须连接到现有的存储过程,该过程在数据库中保存一行文本。 现在我已经看到sp了,它是一个连接的字符串(我的文本放在其中),它用exec(@sql)执行。

因为文本来自公共网站,所以我必须确保不能进行sql注入。

数据库家伙没有听说过sql注入,所以他不知道该怎么做,但因为我不想暴露我的应用程序的风险,我想知道可以做些什么来防止sql注入。然而,我比sql guy更加程序化。

现在我找到了'SP_EXECUTESQL(@SQL)'存储过程,这有助于防止sql注入,还是仍然可以进行恶意调用?

提前感谢帮助我。

1 个答案:

答案 0 :(得分:2)

在此处查看SP_EXECUTESQL(@SQL)的MSDN文档:http://msdn.microsoft.com/en-us/library/ms188001.aspx

警告

  

运行时编译的Transact-SQL   语句可以公开应用程序   恶意攻击,例如SQL   注射。

另请看这里:http://msdn.microsoft.com/en-us/library/ms175170.aspx

我强烈建议不要相信来自任何用户的任何输入!

您能否以某种方式更改要参数化的查询?