Ric*_*ich 7 .net c# securestring
我想使用SecureString来保存数据库的连接字符串.但是,只要我将SqlConnection对象的ConnectionString属性设置为securestring的值,它肯定会对能够读取应用程序内存的任何其他应用程序可见吗?
我做了以下假设:
a)我无法在托管内存之外实例化SqlConnection对象
b)托管内存中的任何字符串都可以被Hawkeye等应用程序读取
当您需要将字符串传递给托管API(例如设置ConnectionString)时,SecureString绝对不会为您提供任何好处.
它真正用于与安全的非托管API进行安全通信.
从理论上讲,微软可以考虑增强SqlConnection对象以支持安全的ConnectionString,但我认为他们不太可能这样做,因为:
SecureString实际上仅在客户端应用程序中有用,例如,密码是从用户输入逐个字符构建的,而不是在托管字符串中拥有整个密码.
在这样的环境中,使用Windows身份验证与SQL Server的连接更为常见.
在服务器上,还有其他方法可以保护SQL Server凭据,首先将访问服务器的权限限制为授权管理员.
2012
微软做了增强SqlConection对象支持安全的ConnectionString通过传递SqlCredential新 SqlConnection.Credential属性:
SecureString pwd = AzureVault.GetSecretStringSecure("ProcessPassword");
SqlCredential = new SqlCredential("Richard", pwd)
connection.Credential = cred;
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有其他DbConnection后代 (例如,OdbcConnection,OleDbConnection,OracleConnection,EntityConnection,DB2Connection)支持它.
是的,您可以,是的,应该使用SecureString来避免让密码在内存中畅通无阻,并容易受到攻击。而不是使用sql连接字符串,您需要使用新的SqlCredential类,该类的Password属性是SecureString。请参考以下文章以获取帮助。
https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlcredential.password(v=vs.110).aspx
http://www.codeproject.com/Tips/408901/Storing-your-connection-string-password-in-SecureS
| 归档时间: |
|
| 查看次数: |
9173 次 |
| 最近记录: |