4

在 SQL Server 2008 R2 中,我想执行一条我希望对 SQL Profiler 或其他观察用户查询的方式不可见的语句。有没有办法控制 SQL 探查器显示的内容?

我想执行类似的操作:

SELECT 'MyPassword' INTO #passwordTable

我不想通过 SQL Server Profiler 或其他方式显示“MyPassword”。有任何想法吗?

4

5 回答 5

9

本质上,不,你不能。您过去可以通过在批处理或语句中添加这样的注释来做到这一点:

-- sp_password

但这不再有效。你为什么不散列你的密码?

于 2012-09-12T20:15:54.037 回答
1

好吧,你必须是服务器管理员才能运行 SQL Profiler,所以即使你可以阻止它看到命令,用户也可以去获取密码表。理想情况下,您将存储密码的哈希而不是密码,从而使分析器的任何查看都无用。

如果您真的想尝试不让探查器看到这些语句,您可以尝试这样的第三方工具:http ://www.dbdefence.com/support/dbdefence-documentation/

我不知道它是否有效,也不知道那家公司的声誉如何。

于 2012-09-12T20:20:24.707 回答
1

Denis,Aaron 是正确的,没有什么比“不可见的语句”更好的了,你不能调整 SQL Profiler 以不显示语句:一旦上船,就可以看到数据库中运行的所有语句。

在将这些敏感数据提交给数据库之前,您需要对其进行模糊处理。有一些混淆的方法可用(单向哈希、对称算法、自制方法),您需要选择更适合您需要的方法并实施。不幸的是,您的案子没有免费午餐...

于 2012-09-27T11:24:18.963 回答
1

我看过一个叫做 DBDefence 的产品。它对分析器完全隐藏 SQL 语句。我不知道他们是怎么做到的。我使用免费版本,因为我的数据库很小。

在 SQL Server 的早期版本中,可以添加注释 --sp_password 但在 SQL Server 2008 及更高版本中不能。

于 2013-09-18T11:03:28.207 回答
0

我看不出重点,真的。如果一个人能够使用 SQL 分析器查看查询,那么他肯定可以访问数据库以查看实际数据。

关键是不要以明文形式存储敏感数据(如密码)。

阻止人们使用 SQL 探查器将归结为在 SQL Server 上应用适当的安全配置。

于 2012-09-12T20:15:07.570 回答