sp_executesql的安全含义是什么?


9

默认情况下,在SQL Server中,[public]角色具有的EXECUTE权限sp_executesql

但是,我继承了一个数据库服务器,以前的DBA撤消了该数据库服务器的EXECUTE权利sp_executesql

作为临时的解决方法,我一直在根据需要(通过在master数据库中的角色)授予EXECUTE权限sp_executesql。但是,这开始成为维护难题。

如果我EXECUTE回馈公众,我是否需要了解其他影响?

Answers:


8

没有。sp_executesql在与原始调用者执行相同的 SQL 相同的上下文和特权下执行SQL。在很多情况下,动态SQL是不可避免的。


3
-1,因为答案未表明Microsoft指出可能存在安全风险msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
miracle173 2012年

@ miracle173-公平地讲,动态SQL编写得不好,不是安全隐患sp_executesql。假设动态SQL要求然后被禁用sp_executesql实际上可能会增加风险,因为至少这使您可以对查询进行参数化(与不同EXEC
Martin Smith

2
尽管永远不能低估sql注入的风险,但禁用禁用sp_executesql不是适当的缓解方法。当通过手工将SQL片段与输入变量连接然后“按原样”执行“手工”构建SQL语句时,绝大多数SQL注入错误发生在客户端。对于所有这些情况sp_executesql,禁用都无济于事。
Remus Rusanu'4
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.