[研究]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 常見動態檔案副檔名
| 副檔名 | 用途 | 是否需要加入允許副檔名 |
|---|---|---|
.axd | ScriptResource、WebResource、Trace.axd | ❌ 不需要 |
.ashx | 自訂 HTTP Handler | ❌ 不需要 |
.asmx | Web Service | ❌ 不需要 |
.svc | WCF Service | ❌ 不需要 |
.json | WebMethod / Web API 回傳 | ❌ 不需要(由 ASP.NET 處理) |
.config | web.config、machine.config | ⚠️ 靜態檔案敏感,通常不能直接存取 → IIS 會封鎖 |
.aspx / .ascx / .master | WebForms 頁面或控制項 | ❌ 不需要,只要 ASP.NET pipeline 正常 |
.cs / .vb | 原始碼檔案 | ❌ 靜態檔案,不應該允許存取 |
.pdb / .dll | 編譯結果 | ❌ 靜態檔案,通常封鎖,不加入白名單 |
🔑 原則:所有由 ASP.NET Handler/Runtime 動態生成的檔案,只要管道正確,IIS 就會交給 ASP.NET 處理,不受副檔名白名單影響。
3️⃣ 什麼情況「需要手動加入」副檔名?
- 自訂的靜態檔案,但副檔名 IIS 不認識(例如 .myext),希望瀏覽器直接讀取
- HTTP Handler / Module 配置錯誤,導致 IIS 把動態檔案當成靜態檔擋掉
- 極端安全策略:
- 「允許未列出的副檔名」❌
- 只有「列出清單」才放行
- 而自訂 Handler 的副檔名沒有對應 Handler mapping → 才可能需要加白名單
正常情況下,標準 WebForms .axd、.ashx、.asmx 不需要加到白名單。
4️⃣ 總結原則
1.動態副檔名 → 不需要加入允許副檔名
(只要 ASP.NET pipeline 正常)
2.靜態副檔名 → 如果未列在允許清單且「允許未列出的副檔名」❌,就需要加入
(例如 .css、.js、圖片、下載檔)
3.敏感檔案如 .config、.pdb、.cs 不要加入白名單,否則安全風險大
(完)
沒有留言:
張貼留言