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

ASP.NET 2.0 加密 Web.config 連接字串完整指南

     編輯:關於ASP.NET

在 ASP.NET 應用程式開發中,資料庫連接字串通常存放在 web.config 組態檔中,方便程式碼透過 API 直接讀取。然而,這些敏感資訊預設以明文形式儲存,一旦伺服器遭入侵或檔案外洩,資料庫帳號密碼將面臨嚴重安全風險。

為何需要加密連接字串?

連接字串包含資料庫伺服器位址、資料庫名稱、使用者帳號與密碼等關鍵資訊。若以明文儲存,任何擁有檔案讀取權限的人員都能輕易取得完整資料庫存取權限。ASP.NET 2.0 內建的 aspnet_regiis.exe 工具提供簡單有效的加密機制,可保護組態檔中的敏感區段。

使用 aspnet_regiis.exe 進行加密與解密

aspnet_regiis.exe 位於 .NET Framework 安裝目錄下(通常為 C:\Windows\Microsoft.NET\Framework\v2.0.50727),透過命令列即可完成組態區段的加密與解密操作。

加密語法

aspnet_regiis -pef "區段名稱" "web.config 所在目錄路徑"

解密語法

aspnet_regiis -pdf "區段名稱" "web.config 所在目錄路徑"

參數說明:

  • -pef:加密指定的組態區段
  • -pdf:解密指定的組態區段
  • 區段名稱:如 connectionStrings、appSettings 等
  • 目錄路徑:包含 web.config 的實體資料夾路徑(非虛擬路徑)

實際操作範例

加密前的 connectionStrings 區段

<connectionStrings>
  <add name="pubsConnectionString" 
       connectionString="Data Source=MHL\SQL2000;Initial Catalog=pubs;User ID=sa;Password=sql2000"
       providerName="System.Data.SqlClient" />
</connectionStrings>

加密後的 connectionStrings 區段

<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
  <EncryptedData Type="https://www.w3.org/2001/04/xmlenc#Element"
       xmlns="https://www.w3.org/2001/04/xmlenc#">
    <EncryptionMethod Algorithm="https://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
    <KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
      <EncryptedKey xmlns="https://www.w3.org/2001/04/xmlenc#">
        <EncryptionMethod Algorithm="https://www.w3.org/2001/04/xmlenc#rsa-1_5" />
        <KeyInfo xmlns="https://www.w3.org/2000/09/xmldsig#">
          <KeyName>Rsa Key</KeyName>
        </KeyInfo>
        <CipherData>
          <CipherValue>e15rhABrAtua53kjZ2a3U+ijC/Hr5ZhGUWGL5swkfxJaHS6hxGacw7CxyNlhnJwRc44ZE2edsKRfSJeXPS76fe4znlE5BqaxMMMWK+yFMiuWM+Cor1DFffheRNjAB7pMYdRQoMRCBq6H18gxIGlRY1dXtUERzNLJ5ug+S/qdj8E=</CipherValue>
        </CipherData>
      </EncryptedKey>
    </KeyInfo>
    <CipherData>
      <CipherValue>Y1SjIK04jc0cS8Fg7EJyLoiXAUWc+I708SOsebWHeihg4kRFEF4wGvQLyrZQqFXNUIm56tIktQgapd7px92nfwAzYFv8R2gYV/7JwjfbjpM1v27p5WgNycJbo8H4uNj4LwgPfoqy2Dl41geMFHXCOak8IWxrA8MkbpIsKHFTJNkMo9yph+vVUMdViwaBSOKONSrXJ2k16kjHoSjJe1VP6WfMFZCeL7+nMuLf4sNZc34d0fl3S50H+kNwZre9MkUCSLr5pImCv5fhgHP+Ee9QwS8ahvOvRwUY7kWMr+M+jKoS+FDbhuRIkcbWaPP75XzdmyBN/vGwcMfX63faA9vdNOsl1a75Kd0L</CipherValue>
    </CipherData>
  </EncryptedData>
</connectionStrings>

重要注意事項

  1. 金鑰容器:預設使用機器層級的 RSA 金鑰容器,若部署到多台伺服器叢集,需匯出/匯入金鑰確保一致性
  2. 執行身分:執行加密指令的使用者需擁有目錄寫入權限
  3. 自動解密:ASP.NET 執行階段會自動解密,程式碼讀取方式完全不變,無需修改應用程式
  4. 支援區段:除 connectionStrings 外,appSettings、system.net/mailSettings 等同樣適用

驗證加密是否生效

開啟瀏覽器存取網站,若頁面正常顯示資料,代表執行階段成功自動解密。若出現「無法解密」錯誤,請檢查金鑰容器權限或嘗試重新匯入金鑰。

透過這項內建機制,開發者無需撰寫額外程式碼,即可大幅提升組態檔安全性,符合資安合規需求。

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