[研究] IIS 10.0 GCB "要求篩選與其他限制模組","允許高位元字元" 實測
2026-01-13
********************************************************************************
Windows Server 從Windows Server 2016開始,IIS為10.0版,後續 Windows Server 2019, Windows Server 2022, Windows Server 2025 也都是 10.0版,大版本號碼相同,小版本可能不同,畫面幾乎相同。
政府組態基準(Government Configuration Baseline,簡稱GCB)
TWGCB-04-014_Microsoft IIS 10政府組態基準說明文件v1.1_1141002
https://www.nics.nat.gov.tw/core_business/cybersecurity_defense/GCB/GCB_Documentation/
https://download.nics.nat.gov.tw/api/v4/file-service/UploadFile/attachfilegcb/TWGCB-04-014_Microsoft%20IIS%2010%E6%94%BF%E5%BA%9C%E7%B5%84%E6%85%8B%E5%9F%BA%E6%BA%96%E8%AA%AA%E6%98%8E%E6%96%87%E4%BB%B6v1.1_1141002.pdf
https://download.nics.nat.gov.tw/api/v4/file-service/UploadFile/attachfilegcb/TWGCB-04-014_Microsoft%20IIS%2010%E6%94%BF%E5%BA%9C%E7%B5%84%E6%85%8B%E5%9F%BA%E6%BA%96%E8%AA%AA%E6%98%8E%E6%96%87%E4%BB%B6v1.1_1141002.docx
********************************************************************************
| 項次 | TWGCB-ID | 類別 | 原則設定名稱 | 說明 | 設定位置 | 設定路徑 | GCB設定值 |
| 28 | TWGCB-04-014-0028 | 要求篩選與其他限制模組 | 允許高位元字元 | ▪這項原則設定決定查詢字串是否允許使用高位元字元(非ASCII字元)。高位元字元之範例包括:Ж、Ы或Я ▪當查詢字串因含有高位元字元而被拒絕時,IIS將會記錄404.12狀態在日誌檔中 ▪禁止使用高位元字元,可確保URL中不會出現非ASCII文字,以避免發生輸入特殊字元或跳脫命令字元等攻擊語法 ▪預設值為允許高位元字元 | 伺服器 | IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\編輯功能設定\一般\不勾選「允許高位元字元」 | 不允許 |
下圖,程式在 Visual Studio 2019 中執行正常 (檔案中文名稱)
下圖,Deploy 後,英文檔案名稱 (Default.aspx ) 正常
下圖,中文名稱的 .aspx 無法執行
**********
HTTP 錯誤 404.12 - Not Found
要求篩選模組設定為拒絕包含高位元字元的要求 URL。
最有可能的原因:
要求包含高位元字元,且網頁伺服器上的要求篩選設定為拒絕高位元字元。
解決方法:
確認 applicationhost.config 或 web.config 檔案中的 configuration/system.webServer/security/requestFiltering@allowHighBitCharacters 設定。
詳細錯誤資訊:
模組 RequestFilteringModule
通知 BeginRequest
處理常式 PageHandlerFactory-Integrated-4.0
錯誤碼 0x00000000
要求的 URL https://localhost:443/測試.aspx
實體路徑 D:\Production\Test443\測試.aspx
登入方法 尚未判定
登入使用者 尚未判定
詳細資訊:
此為安全性功能。除非完全瞭解變更的範圍,否則請勿變更此功能。當 allowHighBitCharacters 設定為 false (未出現時此值為 true) 時,IIS 會拒絕包含高位元字元的要求。如果伺服器應允許高位元字元,請修改 configuration/system.webServer/security/requestFiltering@allowHighBitCharacters 設定。
檢視詳細資訊 »
**********
下圖,嘗試下載檔案名稱有中文的檔案,失敗
註:有可能需要網站重新啟動 or IIS重新啟動 or Windows 重新啟動。
********************************************************************************
2026-01-15 補
下圖,有人說他測試可以;注意,如果在 Visual Studio 2019 中執行 ASP.NET WebForm,是可以的,那是因為 Visual Studio 中用的 IIS Expresss,不是 IIS 10.0
下圖,Deploy 後,是 IIS 10.0,不是 IIS Express
********************************************************************************
2026-01-16 補
詢問 Gemini AI,
在 IIS 中,**「允許高位元字元」(Allow high-bit characters)**的設定主要用於處理非 ASCII 字元(如中文、日文、韓文或特殊符號)。如果為了支援多語系路徑或參數而勾選「允許」,確實會增加如 字元編碼攻擊(Encoding Attacks) 或 路徑穿越(Path Traversal) 的風險。
針對您的問題,Trend Micro Deep Security (DS) 絕對算是一種強力的資安防護手段。
********************************************************************************
2026-01-16 補
實際測試,設定會立刻生效,不需要重新啟動 網站、IIS 或 Windows。
********************************************************************************
2026-01-16 補
實際測試,「網站」層級設定會覆蓋「伺服器」層級效果。兩者都是修改
C:\Windows\System32\inetsrv\config\applicationHost.config
而非 Web.Config
「伺服器」層級預設是允許,
<requestFiltering allowHighBitCharacters="true">
「伺服器」層級設定為不允許後
<requestFiltering allowHighBitCharacters="false">
「網站」層級很奇怪,實際測試,設定有效果,但 applicationHost.config 和 Web.Config 看不到相對應設定,和 AI 討論不出具體真實原因。
伺服器 網站 網站層級設定結果
true true 和伺服器相同,不出現
true false 不出現 <= Why ?
false true 網站層級預設 true,不出現
false false 和伺服器相同,不出現
********************************************************************************
(完)
沒有留言:
張貼留言