2022年8月3日 星期三

[研究][ASP.NET]Multiple Web.Config files 的資料庫連線字串加密測試

[研究][ASP.NET]Multiple Web.Config files 的資料庫連線字串加密測試

2022-08-03

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

某方案使用 Multiple Web.Config files,除了 Web.Config,還有 Web.DeployToDev.config , .... 等 Web.Config 相關檔案。本篇測試 .NET Framework 的資料庫連線字串加密是否會加密 Multiple Web.Config files 架構下 Web.Config 等相關檔案。

cd   C:\Windows\Microsoft.NET\Framework64\v4.0.30319

aspnet_regiis.exe   -pef   connectionStrings   D:\Git\Web1\Solution1\WebApplication1  

結果發現 Web.DeployToDev, .... 等 Web.Config 相關檔案中 connectionStrings區域沒被加密,只有 Web.Config 檔案的 connectionStrings 區域被加密。表示資料庫連線字串加密不支援 Multiple Web.Config files 架構的非 Web.Config 檔案。

一但執行「發佈」(Deploy),會出現下面警告:


2>D:\Git\Web1\Solution1\WebApplication1\Web.DeployToDev.config(31,4): 警告 : No element in the source document matches '/configuration/connectionStrings/add[@name='Web1DBConnectionString']'

2>D:\Git\Web1\Solution1\WebApplication1\Web.DeployToDev.config(35,4): 警告 : No element in the source document matches '/configuration/connectionStrings/add[@name='Web1DBEntities']'

2>已轉換使用 D:\Git\Web1\Solution1\WebApplication1\Web.DeployToDev.config 的 Web.config 成為 obj\DeployToDev\TransformWebConfig\transformed\Web.config。


也就是  Web.DeployToDev.config  要取代掉 Web.Config 中同名的資料庫連線字串時,找不到了,只能繼續使用 Web.Config 中原來的,造成 Multiple Web.Config files 架構失效

********************************************************************************

把 Web.DeployToDev.config 改名為 Web.Config,加密後改名回 Web.DeployToDev.config,也是行不通。因為 connectionStrings 區域被加密後如下,並無 Web1DBConnectionString 和 Web1DBEntities 連線名稱,無法取代。

<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#aes256-cbc" />
   <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
    <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
     <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p" />
     <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
      <KeyName>Rsa Key</KeyName>
     </KeyInfo>
     <CipherData>
      <CipherValue>cTWXpw4W/k/Q/EAUMRsMEQmDd...(略)</CipherValue>
     </CipherData>
    </EncryptedKey>
   </KeyInfo>
   <CipherData>
    <CipherValue>EGgr4XLfk...(略)</CipherValue>
   </CipherData>
  </EncryptedData>
 </connectionStrings>


(完)

相關

[研究]Web.Config資料庫連線字串加解密
https://shaurong.blogspot.com/2022/09/webconfig.html

[研究]Web.Config資料庫連線字串加密、解密失敗:執行 connectionStrings 的組態區段處理常式時發生錯誤
https://shaurong.blogspot.com/2022/09/webconfig-connectionstrings.html

[研究][ASP.NET]Multiple Web.Config files 的資料庫連線字串加密測試
https://shaurong.blogspot.com/2022/08/aspnetmultiple-webconfig-files.html

[研究][ASP.NET]Fortify SCA報告Password Management: Password in Configuration File 問題,與Web.Config資料庫連線字串加密後拿去別台可用性測試https://shaurong.blogspot.com/2022/04/aspnetfortify-scapassword-management.html

[研究][ASP.NET] Fortify SCA 報告 Web.Config 資料庫連線字串設定有 Insecure Transport: Database 問題
https://shaurong.blogspot.com/2018/12/fortify-sca-webconfig.html

保護連接字串和其他組態資訊 (C#) | Microsoft Learn
https://learn.microsoft.com/zh-tw/aspnet/web-forms/overview/data-access/advanced-data-access-scenarios/protecting-connection-strings-and-other-configuration-information-cs

[研究][Fortify SCA]原始碼變數最好不要包含的字串

[研究]Fortify SCA對Web.Config中 Password Management: Password in Configuration File 的關鍵字認定

[研究][ASP.NET] Fortify SCA 報告 Web.Config 中 add key 有 Password Management Password in Configuration 問題

[研究][ASP.NET]Fortify SCA 報告Password Management: Empty Password 和 Hardcoded Password

沒有留言:

張貼留言