2011-09-09 56 views
3

我的web.config文件中包含以下信息。在web.config文件中加密和存儲密碼

<appSettings> 
<add key="AdminUsername" value="User1"/> 
<add key="AdminPassword" value="Password1"/> 
</appSettings> 

我該如何加密和存儲? 我該如何解密和使用?

+0

在這裏也有同樣的答案。 http://stackoverflow.com/questions/6291322/how-to-encrypt-username-and-password-in-web-config-in-c-2-0 – Roshe

回答

2

請參考文章 - http://msdn.microsoft.com/en-us/library/k6h9cz8h%28v=vs.80%29.aspx

的命令是:

ASPNET_REGIIS.EXE -pe 「的appSettings」 -site 「MySharePoint」 -app 「/」

MySharePoint是一個虛擬目錄。 web.config文件也應該在目錄中。

+0

我只需要加密一部分appconfig部分不是全部。 Roshe

+0

更新答案 - 現在只會加密appSettings部分。希望能幫助到你。 –

2

使用aspnet_regiis或等效的API加密配置節的缺點是它會加密整個節。

從安全角度來說很好,但是它使管理員更難檢查同一節中的其他非敏感配置數據。 appSettings是管理員經常要檢查的部分。

一種選擇是把你的證書在不同的部分(例如,創建於<connectionStrings>部分的虛擬連接字符串)和加密僅本節:

<connectionStrings> 
    ... 
    <add key="AdminCredentials" 
     providerName="" 
     connectionString="Username=...;Password=..." /> 
</connectionStrings> 

當然,你必須編寫代碼來解析虛擬連接字符串(String.Split)並提取憑證。像下面(省略錯誤處理的簡單):

string s = ConfigurationManager.ConnectionStrings["AdminCredentials"].ConnectionString; 
string[] tokens = s.Split(';'); 
string userName = tokens[0].Split('=')[1]; 
string password = tokens[1].Split('=')[1]; 
... 

通過這樣做,你可以留下您的appSettings部分未加密。

+0

你能詳細說一下加密一個虛擬節嗎? – Roshe

+0

@Nilaa,我的建議是一個虛擬* connectionString *,而不是虛擬*部分*。請參閱示例代碼 - providerName爲空字符串的連接字符串,以及connectionString本身的用戶名和密碼。然後編寫代碼來解析虛擬連接字符串中的用戶名和密碼。 – Joe

相關問題