我正在写需要访问到SQL Server(v10.50.1600)数据库Intranet上.NET 4.0的应用程序。 该数据库不支持集成安全/ SSPI登录,只有用户/密码登录。 到目前为止,我已经成功的最好的是:
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder()
{
DataSource = Settings.SQLHostName,
Encrypt = true,
TrustServerCertificate = true,
UserID = Settings.SQLUser,
Password = "xxx",
InitialCatalog = "xxx"
};
然而,这需要我存储和处理在本地一个纯文本的密码,我想避免的事情。
有没有办法让ADO,LINQ或实体框架,等一个密码哈希,而不是连接到SQL Server的密码吗?
而对于连接字符串加密存储是聊胜于无,但最终需要在使用前进行解密。 由于背后没有对WPF密码框可绑定的内容属性的理由显然,保持明文密码在内存中是一个坏主意,任何形式的连接字符串解密使用前听起来不明智的。
理想的替代方案是如何理解SQL服务器存储和传输的密码摘要; 应用相同的本地摘要算法; 然后发送摘要,而不是明文密码。 不幸的是,它似乎TDS7密码编码在此部分中描述:
http://dbaspot.com/ms-sqlserver/210567-tds7-8-login-packets.html
似乎不使用任何摘要算法的。 所以,我可能坚持以下podiluska的答案。