可以使用受保護配置來加密 Web 應用程序配置文件(如 Web.config 文件)中的敏感信息(包括用戶名和密碼、數據庫連接字符串和加密密鑰)。對配置信息進行加密后,即使攻擊者獲取了對配置文件的訪問,也可以使攻擊者難以獲取對敏感信息的訪問,從而改進應用程序的安全性。
針對asp.net 2.0的應用程序的數據庫鏈接字符串進行加密:例如,未加密的配置文件中可能包含一個指定用于連接到數據庫的連接字符串的節(jié),如下面的示例所示:
<configuration>
<connectionStrings>
<add name="SampleSqlServer" connectionString="Data
Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
</connectionStrings>
</configuration>
ASP.NET 2.0 中有一個新的安全特性.可以對 Web.config 文件中的任何配置節(jié)進行加密處理,可以通過手工運行工具aspnet_regiis或者編程來完成這個工作。如果你可以直接訪問你的Web 服務器,你可以通過運行如下的命令行:
cd %windows%\Microsoft.NET\Framework\versionNumber
aspnet_regiis -pe "connectionStrings" -app "/SampleApplication" ?Cprov RsaProtectedConfigurationProvider
-pd section
對配置節(jié)進行解密。此參數采用下面的可選參數:
· -app virtualPath 指定應該在包含路徑的級別進行解密。
· -location subPath 指定要解密的子目錄。
· -pkm 指定應該對 Machine.config 而非 Web.config 文件進行解密。
-pdf section webApplicationDirectory
對指定物理(非虛擬)目錄中的 Web.config 文件的指定配置節(jié)進行解密。
-pe section
對指定的配置節(jié)進行加密。此參數采用下面的可選修飾符:
· -prov provider 指定要使用的加密提供程序。
· -app virtualPath 指定應該在包含路徑的級別進行加密。
· -location subPath 指定要加密的子目錄。
· -pkm 指定應該對 Machine.config 而非 Web.config 文件進行加密。
-pef section webApplicationDirectory
對指定物理(非虛擬)目錄中的 Web.config 文件的指定配置節(jié)進行加密。
如果你是使用虛擬主機等不能訪問物理的服務器,你仍然能夠通過編程方式加密的連接字符串:
1 Configuration config = Configuration.GetWebConfiguration(Request.ApplicationPath);
2 ConfigurationSection section = config.Sections["connectionStrings"];
3 section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");;
4 config.Update ();
現在, 使用受保護配置對連接字符串值進行加密的配置文件不以明文形式顯示連接字符串,而是以加密形式存儲它們,如下面的示例所示:
<configuration>
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">