Web.config 儲存連接字串、帳號密碼、加密金鑰等敏感資訊。雖然 ASP.NET 預設封鎖 .config 直接下載,但仍需防範攻擊者透過其他管道讀取。.NET 2.0 提供保護組態系統,可加密/解密指定節點。
<connectionStrings><appSettings><identity><sessionState># 加密 connectionStrings
aspnet_regiis -pe "connectionStrings" -app "/MyApp" -prov "RsaProtectedConfigurationProvider"
# 加密 appSettings
aspnet_regiis -pe "appSettings" -app "/MyApp"
執行後 Web.config 該區段變為 <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider"><EncryptedData>...</EncryptedData></connectionStrings>。
Configuration config = WebConfigurationManager.OpenWebConfiguration("/MyApp");
ConnectionStringsSection section = config.ConnectionStrings;
if (!section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
config.Save();
}
aspnet_regiis -pd "connectionStrings" -app "/MyApp"
# 或程式碼 section.SectionInformation.UnprotectSection();
善用 .NET 2.0 內建保護組態系統加密敏感節點,搭配 Windows 整合驗證與資料庫層級安全設定,構建纵深防禦,守護應用程式核心機密。