在SQL Server 2008 R2中,我想执行一个我想对SQL事件探查器或其他观察用户查询的方法不可见的语句。有没有办法控制SQL事件探查器显示的内容?
我想执行类似的事情:
SELECT 'MyPassword' INTO #passwordTable
我不想通过SQL Server Profiler或其他方式显示“MyPassword”。有什么想法吗?
答案 0 :(得分:9)
基本上,不,你不能。您曾经可以通过在批处理或语句中添加这样的注释来实现此目的:
-- sp_password
但这不再适用。你为什么不哈希你的密码?
答案 1 :(得分:1)
嗯,您必须是服务器管理员才能运行SQL事件探查器,因此即使您可以阻止它查看命令,用户也可以直接获取密码表。理想情况下,您将存储密码的哈希而不是密码,这使得从分析器中查看的内容毫无用处。
如果你真的想让分析器看不到这些陈述,你可以尝试这样的第三方工具:http://www.dbdefence.com/support/dbdefence-documentation/
我不知道它是否有效,或者该公司的声誉如何。
答案 2 :(得分:1)
Denis,Aaron是正确的,没有什么比“隐形声明”更好,你不能将SQL Profiler调整为NOT show语句:一旦登上,就可以看到DB中运行的所有语句。
在将此敏感数据提交给数据库之前,您需要对其进行模糊处理。有一些混淆的方法可用(单向散列,对称算法,自制方法),您需要根据需要选择更合适的方法并实现它。不幸的是,你的案子没有免费午餐......
答案 3 :(得分:1)
我见过一款名为DBDefence的产品。 它完全隐藏了分析器中的SQL语句。我不知道他们是怎么做到的。 我使用免费版,因为我有小型数据库。
在早期版本的SQL Server中,可以添加注释--sp_password 但不是在SQL Server 2008及更高版本中。
答案 4 :(得分:0)
我真的没有看到这一点。如果能够使用SQL事件探查器查看查询,他肯定可以访问数据库以查看实际数据。
关键是不要以明文形式存储敏感数据(如密码)。
阻止人们使用SQL事件探查器将归结为在SQL Server上应用适当的安全配置。