【发布时间】:2014-01-20 01:52:48
【问题描述】:
使用 ADO.NET 时如下声明:
OPEN SYMMETRIC KEY sym_RegAna_Default DECRYPTION BY ASYMMETRIC KEY asym_RegAna_Default WITH PASSWORD = 'a very secure password :-)'
实际上是发送到 SQL Server 为:
exec sp_executesql N' OPEN SYMMETRIC KEY sym_RegAna_Default DECRYPTION BY ASYMMETRIC KEY asym_RegAna_Default WITH PASSWORD = ''a very secure password :-)'' ;
因为它是作为动态 SQL 字符串发送的,所以您可以使用 SQL Profiler 查看密码。
启动 SQL 跟踪将产生以下输出:
exec sp_executesql N' OPEN SYMMETRIC KEY sym_RegAna_Default DECRYPTION BY ASYMMETRIC KEY asym_RegAna_Default WITH PASSWORD = ''非常安全 密码 :-)'' ;
我知道解决此问题的唯一方法是不使用 sp_execute 将其作为动态 SQL 执行,而是直接使用查询。这样,SQL Server 将识别出它是一个敏感查询,并将跟踪输出替换为:
--*OPEN SYMMETRIC KEY----------------------------
是否可以强制 ADO.NETNOT 使用 sp_execute?
(我用谷歌搜索过这个,我可以找到类似的问题,但结果总是执行计划缓存问题/参数嗅探)
作为背景参考,This 问题是我提出问题的触发因素。
【问题讨论】:
标签: sql-server ado.net