我有以下連接字符串:如何隱藏我的C#連接字符串中的密碼?
Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID=sa;Password=password
(.NET Web服務) 這顯然可以通過打開app.config文件並查看配置設置,簡單地認爲。
我需要的是讓黑客無法看到密碼的方法。但同時,請將其設置爲可定製,以便在部署到另一個數據庫時進行更改。
我有以下連接字符串:如何隱藏我的C#連接字符串中的密碼?
Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID=sa;Password=password
(.NET Web服務) 這顯然可以通過打開app.config文件並查看配置設置,簡單地認爲。
我需要的是讓黑客無法看到密碼的方法。但同時,請將其設置爲可定製,以便在部署到另一個數據庫時進行更改。
你有多種選擇 - 我所知道的那些(按優先順序排列):
所以對於例如連接字符串可能是這樣的:
Data Source=Paul-HP\MYDB;Initial Catalog=MyMSDBSQL;Persist Security Info=True;User ID={0};Password={1}
我會去的選項1,如果那不可能的,那麼選項2.我已經提到的完整性選項3。
可能比較容易加密的web.config中的連接字符串或app.config中
見How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI
你可以加密的連接字符串 - 然後當你訪問連接字符串,解密。這並不是很好的證明,但是當你遇到存儲解密連接字符串的密鑰的問題時!
首先,不要使用「SA」帳戶。如果有人獲得密碼,它將使您的數據庫全面開放。使用只允許在特定數據庫上執行CRUD操作的自定義帳戶。
得到web.config
的唯一方法就是破解你的服務器。如果他們這樣做了,無論如何你都被搞砸了。
I建議/解密連接字符串。因此連接字符串必須手動設置。
對於加密看一看: http://dotnet-snippets.de/dns/encrypt-and-decrypt-strings-SID205.aspx
自定義設置來看看: http://msdn.microsoft.com/en-us/library/8eyb2ct1.aspx
更換加密在運行時正確的:
public static void SetAppSettingValue(string Key, string Value)
{
System.Configuration.Configuration config == ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// Add an Application Setting.
config.AppSettings.Settings[Key].Value = Value;
// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
建議2對於靜態的觀點看起來不錯,但是沒有任何提供的解決方案(由任何人)允許編譯後自定義連接字符串?雖然我猜這是不可能的,因爲這需要他們輸入清晰的文字,這正是避免使用咒語。 P.s你爲什麼要編輯所有內容但不作任何改變? – Doomsknight
@Doomsknight [我剛剛從你的帖子末尾刪除了「謝謝」簽名](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed- from-posts) – Justin
如果你想自定義連接字符串,那麼選項3可能是有用的 - 你可以分別加密密碼(和可選的用戶名)。 – Justin