我想使用SecureString来保存数据库的连接字符串。但是,一旦我将SqlConnection对象的ConnectionString属性设置为securestring的值,就肯定可以对其他任何能够读取我的应用程序内存的应用程序进行查看吗?
我做了以下假设:
a)我无法在托管内存之外实例化SqlConnection对象
b)诸如Hawkeye之类的应用程序可以读取托管内存中的任何字符串
最佳答案
当您需要将字符串传递给托管API(例如设置ConnectionString)时,您的绝对权利SecureString不会给您带来任何好处。
它实际上是为与安全的非托管API进行安全通信而设计的。
从理论上讲,Microsoft可以考虑增强SqlConnection对象以支持安全的ConnectionString,但我认为他们不太可能这样做,因为:
2012年
Microsoft通过将 SqlConection 传递给新的 SqlCredential SqlConnection.Credential ojit_r属性,确实增强了 DbConnection 对象以支持安全的 ConnectionString :
SecureString pwd = AzureVault.GetSecretStringSecure("ProcessPassword");
SqlCredential = new SqlCredential("Richard", pwd)
connection.Credential = cred;
不幸的是,没有其他 ojit_a 后代(例如,OdbcConnection,OleDbConnection,OracleConnection,EntityConnection,DB2Connection)支持它。
关于c# - 使用securestring进行SQL连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1922313/