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