2012-04-24 69 views
3

如何僅加密web.config文件中的密碼?僅加密web.config中的密碼ASP.NET

<add name="PSystem" connectionString="Server=test;Database=Dev;User ID=testuser;[email protected];Trusted_Connection=False;Encrypt=True;" providerName="System.Data.SqlClient" /> 
+1

可能重複的問題 http://stackoverflow.com/questions/4525515/protect-encrypt -password-in-the-web-config-file-asp-net – pmtamal 2012-04-24 04:31:14

+0

將它們移出web.config文件。見http://www.asp.net/identity/overview/features-api/best-practices-for-deploying-passwords-and-other-sensitive-data-to-aspnet-and-azure – RickAndMSFT 2015-03-20 06:47:07

回答

2

我相信,內置的加密機制,對整個的connectionString部分工作:

See this website for more info

如果你想加密的內存中的密碼,也許用戶通過登錄進入形式,你可以使用SecureString

+0

嗨,而不是整個連接字符串是否可以只加密密碼? – 2012-04-24 04:43:28

+0

正如我前面提到的,內置的工具允許您在整個部分執行此操作。您可以使用自己的方法加密密碼,然後在應用程序啓動時或在將其用於數據庫連接之前對其進行解密,從而完成所需的任務。 – Ulises 2012-04-24 18:45:16

1

,你可以嘗試在connecction字符串使用標誌如下:

<add name="PSystem" 
connectionString="Server=test; 
        Database=Dev; 
        User [email protected]@; 
        Password=#Password#; 
        Trusted_Connection=False; 
        Encrypt=True;" 
    providerName="System.Data.SqlClient" /> 

那麼你可以有加密的用戶名和密碼如下:

<add key="DB_User" value = [Encrypted Username]> 
<add key="DB_Password" value = [Encrypted Password]> 

然後在代碼中,你只需更換標誌:

string _connectionString = ConfigurationManager.ConnectionStrings["PSystem"].ConnectionString; 

string user = Decrypt(ConfigurationManager.AppSettings["DB_User"]); 
string password = Decrypt(ConfigurationManager.AppSettings["DB_Password"]); 

_connectionString = _connectionString.Replace("##User##", user).Replace("##Password##", password); 
1

要加密的配置文件 內容,請使用帶有-pe選項的aspnet_regiis.exe工具和要加密的配置元素的名稱。

ASPNET_REGIIS -pe 「的ConnectionStrings」 -app 「/ SampleApplication」 -prov 「RsaProtectedConfigurationProvider」

來源:http://msdn.microsoft.com/en-us/library/zhhddkxy(v=vs.100).aspx