将SQL Server连接的密码缓存为哈希

Rei*_*ien 1 .net sql-server hash password-protection basic-authentication

我正在编写一个.NET 4.0应用程序,需要访问Intranet上的SQL Server(v10.50.1600)数据库.该数据库不支持集成安全性/ SSPI登录,仅支持用户/密码登录.我到目前为止所做的最好的是:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder()
{
   DataSource = Settings.SQLHostName,
   Encrypt = true,
   TrustServerCertificate = true,
   UserID = Settings.SQLUser,
   Password = "xxx",
   InitialCatalog = "xxx"
};
Run Code Online (Sandbox Code Playgroud)

但是,这需要我在本地存储和操作纯文本密码,这是我想要避免的.

有没有办法给ADO,LINQ或实体框架等提供密码哈希而不是密码来连接到SQL Server?


虽然连接字符串的加密存储总比没有好,但最终需要在使用前解密.由于在WPF密码框上没有可绑定内容属性背后的基本原理显然是将明文密码保存在内存中是一个坏主意,使用前任何类型的连接字符串解密听起来都是不明智的.

理想的替代方案是了解SQL服务器如何存储和传输其密码摘要; 在本地应用相同的摘要算法; 然后发送摘要而不是明文密码.不幸的是,似乎部分描述了TDS7密码编码:

http://dbaspot.com/ms-sqlserver/210567-tds7-8-login-packets.html

好像根本没有使用任何摘要算法.所以我可能会坚持使用podiluska的答案.

pod*_*ska 6

您可以在app.config中加密连接字符串.

http://msdn.microsoft.com/en-us/library/89211k9b(v=vs.80).aspx

http://msdn.microsoft.com/en-us/library/53tyfkaw(v=vs.100).aspx

但是,鉴于这是一个Intranet应用程序,我建议找出为什么没有启用Integrated Security.