2025年7月4日 星期五

[研究]ASP.NET WebForm 網站【「查閱者原則」安全標頭值不安全】弱點處理

[研究]ASP.NET WebForm 網站【「查閱者原則」安全標頭值不安全】弱點處理

2025-07-04

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

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

ASP.NET WebForm 網站用 HCL AppScan 10.8.0 掃描結果如下,甚麼意思? 如何修正 ?


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

AppScan 描述重點:

你的網站「回應標頭 (Response Header)」中的 「查閱者原則」(Referrer-Policy) 設定為:

Referrer-Policy: no-referrer-when-downgrade

這個設定屬於較舊、不完全安全的規範,瀏覽器在:

  • 同一個 HTTPS 頁面跳轉到另一個 HTTPS 頁面時,會帶上 Referrer(來源網址資訊)
  • 若從 HTTPS 跳轉到 HTTP,則不帶 Referrer

因此,攻擊者若透過設計混合內容或中間人攻擊,有可能間接獲取敏感來源資訊(如帳號、網址結構、內部路徑等)

🎯 解決方案:強化 Referrer-Policy 設定

建議在網站的 HTTP Response Header 或 ASP.NET WebForm 程式碼 加上更嚴格的 Referrer-Policy,常見推薦如下:

設定值安全性說明
no-referrer★★★★ 高完全不傳送 Referrer,最嚴格但影響功能性
strict-origin-when-cross-origin★★★ 中上同源傳完整 Referrer,跨域只帶來源站資訊(不帶路徑)
same-origin★★ 中只在同一來源下傳送完整 Referrer,跨域不傳送

⚠️ 多數企業網站可用 strict-origin-when-cross-origin,兼顧安全與功能。

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

ASP.NET WebForm 解決方案

方法1:Web.Config 全站設置

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Referrer-Policy" value="strict-origin-when-cross-origin" />
    </customHeaders>
  </httpProtocol>
</system.webServer>


方法2:程式碼動態設定(單一頁面)

放在 Page_Load:

protected void Page_Load(object sender, EventArgs e)
{
    Response.Headers["Referrer-Policy"] = "strict-origin-when-cross-origin";
}


註:不同的弱掃工具,對等級判定可能不一致;ZAP 某些版本或設定下,並不一定會針對 Referrer-Policy 給出專門警示;但許多商業工具(如 HCL AppScan、Burp Suite Pro)可能會專門標示。

註:HCL AppScan 的 "Referrer Policy" Security 頭值不安全" 和 "「查閱者原則」安全標頭值不安全" 是相同的

註:手動檢查「查閱者原則 (Referrer-Policy)」值方法

  1. 透過 Chrome/Edge 開發者工具:
  2. F12 → Network → 點選頁面請求
  3. 查看 Response Headers
  4. 確認沒有 Referrer-Policy,即為弱點狀況

(完)

相關

沒有留言:

張貼留言