我在寫一個需要訪問Intranet上的SQL Server(v10.50.1600)數據庫的.NET 4.0應用程序。該數據庫不支持集成安全性/ SSPI登錄,僅支持用戶/密碼登錄。到目前爲止,我已經成功的最好的是:SQL Server連接的緩存密碼作爲散列
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的答案下面。
在我們的Web應用程序中,我們加密用戶標識和密碼並將其存儲在app.config中加密。 –