2025年7月4日 星期五

[研究]ASP.NET WebForm 網站【檢查是否有 SRI(子資源完整性)支援】弱點處理

[研究]ASP.NET WebForm 網站【檢查是否有 SRI(子資源完整性)支援】弱點處理

2025-07-04

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

SRI(子資源完整性,Subresource Integrity)

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

ASP.NET WebForm 網站 HCL AppScan 10.18.0 報告【檢查是否有 SRI(子資源完整性)支援】弱點如下,如何處理?

ChatGPT 說:

感謝提供報告,以下是針對您 HCL AppScan 檢測出的【缺少 SRI(子資源完整性)】建議處理方式:

❶ 弱點說明

您的 ASP.NET WebForm 網站透過 <script> 載入第三方 JavaScript,例如:

<script src="https://www.googletagmanager.com/gtag/js?id=XXXXXXX"></script>

但未加上 integrity 參數,導致瀏覽器無法驗證此資源是否被竄改,若 CDN 遭入侵、被植入惡意碼,使用者端也會執行不安全內容。

❷ SRI(子資源完整性) 正確寫法

需補上 integrity 及 crossorigin 屬性,例如:

<script 
    src="https://www.googletagmanager.com/gtag/js?id=XXXXXXX" 
    integrity="sha384-XXXXXXX" 
    crossorigin="anonymous">
</script>

integrity:哈希值,用來驗證資源完整性。

crossorigin="anonymous":避免送出憑證,配合 SRI 一起使用。

❸ 取得 SRI 哈希值的方式

可以用官方推薦的 SRI Hash Generator 工具:

步驟:

瀏覽器開啟 https://www.googletagmanager.com/gtag/js?id=XXXXXXX

下載該 .js 檔案。

將內容貼入 https://www.srihash.org 生成 SRI 雜湊碼。

將雜湊碼填入 integrity。

❹ 注意事項

第三方資源若經常變動(例如 id 參數不同、檔案不固定),SRI 難以套用。

Google Analytics、Tag Manager 等部分官方不提供固定 SRI 雜湊,需自行判斷風險,或改為自有主機代管版本。

❺ 替代方案

若無法使用 SRI,可考慮:

✔ 透過企業防火牆、WAF 過濾異常外部資源。

✔ 自行下載並代管必要 JS 檔,避免依賴 CDN。

✔ 與資安團隊評估是否能申請該弱點例外。

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

2025-07-04補,

 HCL AppScan 10.18.0 掃描後,報告【SRI (Subresource Integrity) 的檢查】,

問題在<script src='https://www.google.com/recaptcha/api.js'></script>

ChatGPT 說:

3️⃣ Google reCAPTCHA 是否支援 SRI?

⚠️ Google reCAPTCHA 官方不提供 SRI Hash,原因:

  • https://www.google.com/recaptcha/api.js 內容會根據不同請求、地域、版本動態改變
  • SRI 必須針對固定內容計算 Hash
  • 動態內容無法適用 SRI

所以,即使你想手動加上 integrity,也無法保證 Hash 不變,反而可能導致資源加載失敗。

4️⃣ 如何處理?

最佳實務:

  • 對於 可信任第三方如 Google reCAPTCHA,即使無法加 SRI,AppScan 報告可以標記為「False Positive(誤判)」
  • 可以在安全報告中補充說明:「此資源為 Google 官方提供,雖無法套用 SRI,但來源可信,且符合官方建議實作」

(完)

相關

Subresource integrity
https://groups.google.com/g/recaptcha/c/BFY3TZ-2g3w?pli=1

Google recaptcha fails SRI
https://github.com/mozilla/http-observatory/issues/364

[研究]ASP.NET WebForm 網站【檢查是否有 SRI(子資源完整性)支援】弱點處理
https://shaurong.blogspot.com/2025/07/aspnet-webform-sri.html

[研究]Google reCAPTCHA 不支援 SRI (子資源完整性,Subresource Integrity) 佐證https://shaurong.blogspot.com/2025/10/google-recaptcha-sri-subresource.html

沒有留言:

張貼留言