1. 程式人生 > >ASP.NET加密Web.config 配置檔案

ASP.NET加密Web.config 配置檔案

可以使用受保護配置來加密 Web 應用程式配置檔案(如 Web.config 檔案)中的敏感資訊(包括使用者名稱和密碼、資料庫連線字串和加密金鑰)。對配置資訊進行加密後,即使攻擊者獲取了對配置檔案的訪問,也可以使攻擊者難以獲取對敏感資訊的訪問,從而改進應用程式的安全性。

  針對asp.net 2.0的應用程式的資料庫連結字串進行加密:例如,未加密的配置檔案中可能包含一個指定用於連線到資料庫的連線字串的節,如下面的示例所示:

  1. <configuration>
  2. <connectionStrings>
  3. <addname="SampleSqlServer"connectionString
    ="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"/>
  4. </connectionStrings>
  5. </configuration>

ASP.NET 2.0 中有一個新的安全特性.可以對 Web.config 檔案中的任何配置節進行加密處理,可以通過手工執行工具aspnet_regiis或者程式設計來完成這個工作。如果你可以直接訪問你的Web 伺服器,你可以通過執行如下的命令列:

  1. cd  %windows%\Microsoft.NET\Framework\versionNumber  
  2. aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" –prov RsaProtectedConfigurationProvider 
  3. -pd section 

對配置節進行解密。此引數採用下面的可選引數:

· -app virtualPath 指定應該在包含路徑的級別進行解密。

· -location subPath 指定要解密的子目錄。

· -pkm 指定應該對 Machine.config 而非 Web.config 檔案進行解密。

-pdf section webApplicationDirectory
對指定物理(非虛擬)目錄中的 Web.config 檔案的指定配置節進行解密。

-pe section
對指定的配置節進行加密。此引數採用下面的可選修飾符:

· -prov provider 指定要使用的加密提供程式。

· -app virtualPath 指定應該在包含路徑的級別進行加密。

· -location subPath 指定要加密的子目錄。

· -pkm 指定應該對 Machine.config 而非 Web.config 檔案進行加密。

-pef section webApplicationDirectory
對指定物理(非虛擬)目錄中的 Web.config 檔案的指定配置節進行加密。

  如果你是使用虛擬主機等不能訪問物理的伺服器,你仍然能夠通過程式設計方式加密的連線字串:

  1. 1 Configuration config =Configuration.GetWebConfiguration(Request.ApplicationPath); 
  2. 2 ConfigurationSection section =config.Sections["connectionStrings"]; 
  3. 3 section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");; 
  4. 4 config.Update (); 

現在, 使用受保護配置對連線字串值進行加密的配置檔案不以明文形式顯示連線字串,而是以加密形式儲存它們,如下面的示例所示:

  1. <configuration>
  2. <connectionStringsconfigProtectionProvider="RsaProtectedConfigurationProvider">
  3. <EncryptedDataType="http://www.w3.org/2001/04/xmlenc#Element"
  4. xmlns="http://www.w3.org/2001/04/xmlenc#">
  5. <EncryptionMethodAlgorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
  6. <KeyInfoxmlns="http://www.w3.org/2000/09/xmldsig#">
  7. <EncryptedKeyxmlns="http://www.w3.org/2001/04/xmlenc#">
  8. <EncryptionMethodAlgorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
  9. <KeyInfoxmlns="http://www.w3.org/2000/09/xmldsig#">
  10. <KeyName>RSA Key</KeyName>
  11. </KeyInfo>
  12. <CipherData>
  13. <CipherValue>RXO/zmmy3sR0iOJoF4ooxkFxwelVYpT0riwP2mYpR3FU+r6BPfvsqb384pohivkyNY7Dm4lPgR2bE9F7k6TblLVJFvnQu7p7d/yjnhzgHwWKMqb0M0t0Y8DOwogkDDXFxs1UxIhtknc+2a7UGtGh6D 
  14. i3N572qxdfmGfQc7ZbwNE
  15. </CipherValue>
  16. </CipherData>
  17. </EncryptedKey>
  18. </KeyInfo>
  19. <CipherData>
  20. <CipherValue>KMNKBuV9nOid8pUvdNLY5I8R7BaEGncjkwYgshW8ClKjrXSM7zeIRmAy/cTaniu8Rfk92KVkEK83+UlQd+GQ6pycO3eM8DTM5kCyLcEiJa5XUAQv4KITBNBN6fBXsWrGuEyUDWZYm6Eijl8DqRDb 
  21. 11i+StkBLlHPyyhbnCAsXdz5CaqVuG0obEy2xmnGQ6G3Mzr74j4ifxnyvRq7levA2sBR4lhE5M80Cd5yKEJktcPWZYM99TmyO3KYjtmRW/Ws/XO3z9z1b1KohE5Ok/YX1YV0+Uk4/yuZo0Bjk+rErG505YMfRVtxSJ4ee418 
  22. ZMfp4vOaqzKrSkHPie3zIR7SuVUeYPFZbcV65BKCUlT4EtPLgi8CHu8bMBQkdWxOnQEIBeY+TerAee/SiBCrA8M/n9bpLlRJkUb+URiGLoaj+XHym//fmCclAcveKlba6vKrcbqhEjsnY2F522yaTHcc1+wXUWqif7rSIPhc0+ 
  23. MT1hB1SZjd8dmPgtZUyzcL51DoChy+hZ4vLzE
  24. </CipherValue>
  25. </CipherData>
  26. </EncryptedData>
  27. </connectionStrings>