2010-05-31 111 views
1

什麼是使用LINQ to SQL時加密web.config文件的connectionStrings節的最佳實踐是什麼時候?加密連接字符串使用LINQ to SQL

+0

這是完全有必要嗎? IIS不會成爲你的web.config,所以沒有人能讀它,除非他們危及您的服務器。如果你還在擔心,你可以使用一些RijndaelManaged的字符串在你的配置進行加密,然後建立一個類LINQ接觸它之前對其進行解密。 http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx – 2010-05-31 04:49:22

回答

3

首先,在web.config中加密部分/的app.config不是特定於剛LINQ2SQL。 .NET框架提供了一套特別的班,可以讓你independantly加密/解密的web.config/app.config中的一部分。

您可以加密使用DPAPI提供你的web.config的部分。在您的應用程序中沒有其他需要更改。你仍然繼續閱讀appsettings和conn。像往常一樣。使用下面的代碼來加密/解密配置文件的一部分。

//call: ProtectSection("connectionStrings","DataProtectionConfigurationProvider"); 
private void ProtectSection(string sectionName, string provider) 
{ 
    Configuration config = 
     WebConfigurationManager. 
      OpenWebConfiguration(Request.ApplicationPath); 

    ConfigurationSection section = config.GetSection(sectionName); 

    if (section != null && !section.SectionInformation.IsProtected) 
    { 
     section.SectionInformation.ProtectSection(provider); 
     config.Save(); 
    } 
} 

//call: UnProtectSection("connectionStrings"); 
private void UnProtectSection(string sectionName) 
{ 
    Configuration config = 
     WebConfigurationManager. 
      OpenWebConfiguration(Request.ApplicationPath); 

    ConfigurationSection section = config.GetSection(sectionName); 

    if (section != null && section.SectionInformation.IsProtected) 
    { 
     section.SectionInformation.UnprotectSection(); 
     config.Save(); 
    } 
} 
+1

或使用內置的aspnet_regiis實用程序來加密/解密.NET配置文件部分.... – 2010-05-31 05:57:38

+0

加密使用DPAPI使用本地機器專用的本地machineKey。在服務器上部署應用程序時,可能無法訪問服務器上的aspnet_regiis工具,或者可能需要在web.config/app.config中提供machineKey部分。所以我建議你用代碼來做。 – 2010-06-04 04:34:13

1

如果你覺得有必要的話,你可以只是簡單的加密你的文件web.config<connectionStrings>節 - 這是一個標準的.NET程序,所有的.NET代碼可以處理它 - 沒有問題:

或谷歌或冰吧 - 你會得到數千次點擊.....