2026年1月20日 星期二

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的副檔名" 不勾選,ASP.NET WebForm 動態生成的檔案,副檔名都不用加入"允許副檔名" 名單嗎?

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的副檔名" 不勾選,ASP.NET WebForm 動態生成的檔案,副檔名都不用加入"允許副檔名" 名單嗎?

2026-01-20

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的副檔名" 不勾選,實測 .axd 檔案
https://shaurong.blogspot.com/2026/01/iis-100-gcb-axd.html

很難全面實際測試,只能問

ChatGPT

你問的非常重要,我仔細整理如下。重點:不是全部動態副檔名都不用加,但大部分 ASP.NET WebForms 產生的動態檔案確實不需要加到「允許副檔名」名單,因為 IIS 的「要求篩選」主要管的是 靜態檔案。

1️⃣ IIS「要求篩選」作用

功能:控制 靜態檔案或未知副檔名 是否允許存取

預設:

如果「允許未列出的副檔名」打勾 → 任何副檔名都可以

如果沒打勾 → 只有列在「允許副檔名」清單的副檔名才會被 IIS 放行

注意:ASP.NET Handler / Module 處理的動態請求(例如 .axd、.asmx、.svc)不走副檔名白名單,只要 ASP.NET pipeline 正常,它們會被直接交給 Runtime 處理

2️⃣ ASP.NET WebForms 常見動態檔案副檔名

副檔名用途是否需要加入允許副檔名
.axdScriptResource、WebResource、Trace.axd❌ 不需要
.ashx自訂 HTTP Handler❌ 不需要
.asmxWeb Service❌ 不需要
.svcWCF Service❌ 不需要
.jsonWebMethod / Web API 回傳❌ 不需要(由 ASP.NET 處理)
.configweb.config、machine.config⚠️ 靜態檔案敏感,通常不能直接存取 → IIS 會封鎖
.aspx / .ascx / .masterWebForms 頁面或控制項❌ 不需要,只要 ASP.NET pipeline 正常
.cs / .vb原始碼檔案❌ 靜態檔案,不應該允許存取
.pdb / .dll編譯結果❌ 靜態檔案,通常封鎖,不加入白名單

🔑 原則:所有由 ASP.NET Handler/Runtime 動態生成的檔案,只要管道正確,IIS 就會交給 ASP.NET 處理,不受副檔名白名單影響。

3️⃣ 什麼情況「需要手動加入」副檔名?

  1. 自訂的靜態檔案,但副檔名 IIS 不認識(例如 .myext),希望瀏覽器直接讀取
  2. HTTP Handler / Module 配置錯誤,導致 IIS 把動態檔案當成靜態檔擋掉
  3. 極端安全策略:

    • 「允許未列出的副檔名」❌
    • 只有「列出清單」才放行
    • 而自訂 Handler 的副檔名沒有對應 Handler mapping → 才可能需要加白名單

正常情況下,標準 WebForms .axd、.ashx、.asmx 不需要加到白名單。

4️⃣ 總結原則

1.動態副檔名 → 不需要加入允許副檔名

(只要 ASP.NET pipeline 正常)

2.靜態副檔名 → 如果未列在允許清單且「允許未列出的副檔名」❌,就需要加入

(例如 .css、.js、圖片、下載檔)

3.敏感檔案如 .config、.pdb、.cs 不要加入白名單,否則安全風險大

(完)

沒有留言:

張貼留言