gpt4 book ai didi

c# - 使用 securestring 进行 sql 连接

转载 作者:太空狗 更新时间:2023-10-29 20:15:21 24 4
gpt4 key购买 nike

我想使用 SecureString 来保存数据库的连接字符串。但是,只要我将 SqlConnection 对象的 ConnectionString 属性设置为安全字符串的值,它就会对任何其他能够读取我的应用程序内存的应用程序可见吗?

我做了以下假设:
a) 我无法在托管内存之外实例化 SqlConnection 对象
b) 托管内存中的任何字符串都可以被应用程序读取,例如 Hawkeye

最佳答案

您绝对正确,当您需要将字符串传递给托管 API 时,例如设置 ConnectionString,SecureString 不会为您提供任何好处。

它实际上是为与安全的非托管 API 进行安全通信而设计的。

Microsoft 理论上可以考虑增强 SqlConnection 对象以支持安全的 ConnectionString,但我认为他们不太可能这样做,因为:

  • SecureString 实际上只在客户端应用程序中有用,例如密码是根据用户输入逐个字符构建的,而无需将整个密码放在托管字符串中。

  • 在这样的环境中,更常见的是使用 Windows 身份验证连接到 SQL Server。

  • 在服务器上,还有其他方法可以保护 SQL Server 凭据,首先是将对服务器的访问限制为授权管理员。


2012

Microsoft 确实增强了 SqlConection 对象通过传递 SqlCredential 来支持安全的 ConnectionString 到新的 SqlConnection.Credential 属性:

SecureString pwd = AzureVault.GetSecretStringSecure("ProcessPassword");
SqlCredential = new SqlCredential("Richard", pwd)
connection.Credential = cred;

不幸的是没有其他 DbConnection 后代 (例如,OdbcConnection、OleDbConnection、OracleConnection、EntityConnection、DB2Connection) 支持它。

关于c# - 使用 securestring 进行 sql 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1922313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com