首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 加密 Web.config 連接字串完整教學

     編輯:關於ASP.NET

部署正式環境時,web.config 中的資料庫連接字串(含帳密)若明文儲存風險極高。ASP.NET 2.0 內建 RSA 加密機制,可透過 aspnet_regiis 工具完成加密,應用程式碼**零修改**即可自動解密讀取。

步驟 1:建立 RSA 金鑰容器

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pc "MyKeys" -exp
  • -pc:建立金鑰容器;-exp:允許匯出(備份/移轉用)。
  • 容器名稱 MyKeys 自訂。

步驟 2:在 web.config 註冊加密提供者

<configProtectedData>
  <providers>
    <add name="MyProvider"
         type="System.Configuration.RsaProtectedConfigurationProvider"
         keyContainerName="MyKeys"
         useMachineContainer="true" />
  </providers>
</configProtectedData>

步驟 3:加密指定區段

建立批次檔 encrypt.bat:

@echo off
set TOOL=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis
set APP_PATH=D:\MyWebApp
%TOOL% -pef "connectionStrings" "%APP_PATH%" -prov "MyProvider"
%TOOL% -pef "system.web/identity" "%APP_PATH%" -prov "MyProvider"
pause
  • -pef:加密實體路徑下的區段;-prov 指定提供者名稱。
  • 常加密區段:connectionStrings、system.web/identity、appSettings。

步驟 4:授權網站執行身分讀取金鑰

加密後,須給 IIS 執行帳號(如 Network Service、IIS_IUSRS)金鑰檔讀取權限:

  1. 金鑰位置:C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\
  2. 依時間找到剛建立的金鑰檔 → 右鍵屬性 → 安全性 → 加入 Network Service 讀取權限。

缺少此步驟會拋出 The RSA key container could not be opened 錯誤。

解密(需維護時)

%TOOL% -pdf "connectionStrings" "%APP_PATH%"

無服務器管理權限怎麼辦?

虛擬主機環境可改用程式碼動態加密(Configuration.GetWebConfiguration + ProtectSection),但仍需應用程式池身分有寫入 web.config 權限。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved