sp_executesql 的安全隐患是什么?

Ale*_*Dba 9 security sql-server permissions

默认情况下,在SQL Server中,[public]角色拥有EXECUTE权利sp_executesql

不过,我继承,其中前面的DBA已撤销的数据库服务器EXECUTE上的权利sp_executesql

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

如果我EXECUTE重新授予公众,是否有任何我需要注意的影响?

Rem*_*anu 8

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

  • -1 因为答案并未表明微软指出可能存在安全风险 http://msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx (4认同)
  • 虽然永远不能低估 sql 注入的风险,但禁用 `sp_executesql` 并不是适当的缓解措施。当 SQL 语句是通过将 SQL 片段与输入变量连接起来“手工”构建,然后“按原样”执行时,绝大多数 SQL 注入错误都发生在客户端。对于所有这些情况,禁用 `sp_executesql` 没有任何帮助。 (2认同)