顯示具有 GCB 標籤的文章。 顯示所有文章
顯示具有 GCB 標籤的文章。 顯示所有文章

2026年8月13日 星期四

[研究]中華龍網(DragonSoft)GCB 政府組態基準 - 管理設定稽核工具

[研究]中華龍網(DragonSoft)GCB/FCB 政府金融資安組態稽核軟體

2026-08-13

GCB/FCB 政府金融資安組態稽核軟體
GCB(政府組態基準,Government Configuration Baseline)
https://www.dragonsoft.com/pagenation/D-GCB.html

政府組態基準(GCB)
https://www.nics.nat.gov.tw/core_business/cybersecurity_defense/GCB/

GCB 要自行手動設定麻煩,有工具可以設定、管理、查詢、稽核 會方便多了。

TWGCB 類似產品 (ChatGPT)

產品/工具 TWGCB 稽核 Windows Server IIS 10 集中管理 備註
中華龍網 D-GCB ⭐⭐⭐⭐⭐ ✅ ✅ ✅ 台灣 TWGCB 最直接
資安院 GCB 官方部署資源 ⭐⭐⭐⭐⭐ ✅ ✅ ❌ 免費,但比較偏 GPO/部署,不是完整管理平台
Tenable Nessus / Security Center ⭐⭐⭐⭐ ✅ ✅ ✅ 可做 Compliance Audit,但要確認 TWGCB Audit 檔
Qualys Policy Compliance ⭐⭐⭐⭐ ✅ ✅ ✅ 可自訂 Policy/Control,可自行建立 TWGCB
HCL BigFix Compliance ⭐⭐⭐ ✅ △ ✅ 強項是大量端點組態管理
Tripwire Enterprise ⭐⭐⭐ ✅ △ ✅ 組態監控、變更管理強
CIS-CAT Pro ⭐⭐ ✅ △ △ 強在 CIS,不是台灣 TWGCB
Microsoft Security Compliance Toolkit ⭐⭐ ⭐⭐⭐⭐⭐ △ △ Microsoft Baseline,不是 TWGCB

注意,Tenable、Qualys、CIS-CAT、BigFix 等「可以做 Compliance」≠「原生支援 TWGCB」。

(完)

2026年8月12日 星期三

[研究]簡介 DSWAgent-agent-192.168.128.129.msi - 中華龍網(DragonSoft)GCB 政府組態基準工具

[研究]簡介 DSWAgent-agent-192.168.128.129.msi - 中華龍網(DragonSoft)GCB 政府組態基準工具

2026-08-12

ChatGPT (除安裝抓圖,其他沒確認過)

簡介 DSWAgent-agent-192.168.128.129.msi

(合法買的,Server 端不在此網段,先用台 VM測試安裝看看)






ChatGPT

DSWAgent-agent-192.168.128.129.msi 從檔名與公開資料來看,很可能是中華龍網(DragonSoft)的 DSWAgent 用戶端代理程式,其中 192.168.128.129 很可能是它要連線的管理/伺服器 IP。

中華龍網(DragonSoft)官方網站

1. DSWAgent 是什麼?

DSWAgent 是中華龍網的 Agent(端點代理程式)。公開的惡意程式分析資料中,可以看到:

  • ProductName:DSWAgent
  • OriginalFileName:DSWAgent.exe
  • CompanyName:中華龍網
  • FileVersion:1.1.3.1
  • Registry 路徑包含:
    • HKLM\SOFTWARE\Dragonsoft\Agent
    • HKCU\Software\Dragonsoft\Agent

這些資訊與中華龍網的產品相符。

https://any.run/report/c777e7cd7fc3027d86b03e8e31fc3cf92afe071d28f0503006914df46d300397/820310e8-03b9-4491-ba02-c518afffe9bc

中華龍網目前的產品線包括 VANS 資安弱點通報、GCB 政府組態基準、DVM 弱點掃描、EDR 等端點資安產品;其官方網站也直接把 dswagent 列在相關產品/技術關鍵字中。

https://www.sitelike.org/similar/genie-networks.com/

2. 192.168.128.129 是什麼?


檔名:DSWAgent-agent-192.168.128.129.msi

很可能是:

部分 意義
DSWAgent Agent 程式名稱
agent 表示這是端點 Agent 安裝包
10.20.62.217 管理伺服器/DSWAgent Server 的 IP
.msi Windows Installer 安裝套件

所以它比較像是:「把 DSWAgent 安裝到某台 Windows 電腦,並設定它連到 192.168.128.129」

而不是一般使用者自己安裝的應用程式。


3. 它可能用來做什麼?

如果你是在公司、政府機關或資安環境看到這個 MSI,我會優先懷疑它是用於:

Windows 端點 ↔ 資安管理伺服器

例如:


10.20.62.217 DSWAgent 管理端 │ ┌─────────┼─────────┐ │ │ │ ▼ ▼ ▼ PC-001 PC-002 Server-001 DSWAgent DSWAgent DSWAgent

可能負責:

  • 端點資訊盤點
  • 軟體/硬體資產資訊
  • 弱點掃描相關資訊蒐集
  • 資安組態檢查
  • 接收管理端派送的工作
  • 將掃描/檢查結果回傳伺服器

實際功能則要看你們公司安裝的是中華龍網哪一套產品,例如 VANS、GCB、DVM 等,不能只從檔名判定。


4. 這是不是病毒?

不能因為名稱是 DSWAgent 就直接判定是病毒。

反而有一個很重要的線索:公開分析資料明確顯示某個 DSWAgent.exe 的 CompanyName 是「中華龍網」,而中華龍網官方網站也確實存在 DSWAgent 這個產品相關資訊。

但是要注意:「DSWAgent 是合法軟體」≠「你手上的這個 MSI 一定安全」。

尤其你的檔名帶有特定內部 IP 192.168.128.129,我會建議先確認 數位簽章、Hash、安裝來源及 MSI 內容。


5. 如果這是你公司電腦上的檔案

你可以在 PowerShell 執行:


Get-AuthenticodeSignature "C:\你的路徑\DSWAgent-agent-10.20.62.217.msi"

再取得 SHA-256:


Get-FileHash "C:\你的路徑\DSWAgent-agent-10.20.62.217.msi" -Algorithm SHA256

以及查看 MSI 基本資訊:


msiexec /i "C:\你的路徑\DSWAgent-agent-10.20.62.217.msi"

先不要按安裝,如果只是要查資訊,可以先做前兩項。

(完)

2026年1月28日 星期三

[研究]國家資通安全研究院(NICS)的 IIS 10.0 GCB實作文件

[研究]國家資通安全研究院(NICS)的 IIS 10.0 GCB實作文件

2026-01-28

Windows Server 從Windows Server 2016開始,IIS為10.0版,後續 Windows Server 2019, Windows Server 2022, Windows Server 2025 也都是 10.0版,大版本號碼相同,小版本可能不同,畫面幾乎相同。

政府組態基準(Government Configuration Baseline,簡稱GCB)

原本只有文字版,發現2025年底有圖解和影片版了。

GCB數位教材

https://www.nics.nat.gov.tw/core_business/cybersecurity_defense/GCB/GCB_Digital_Materials/


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

【文字版本】

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

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

【圖解教學】

在網頁上直接搜尋 "114年GCB實作文件_Microsoft IIS 10.0" 比較快

應用程式實作教材(2025/12/31更新) / 114年GCB實作文件_Microsoft IIS 10.0 【PDF】
直接連結網址
https://download.nics.nat.gov.tw/api/v4/file-service/UploadFile/attachfilegcb/114%E5%B9%B4GCB%E5%AF%A6%E4%BD%9C%E6%96%87%E4%BB%B6_Microsoft%20IIS%2010.0v1.0_1141222.pdf
解壓得到 "114年GCB實作文件_Microsoft IIS 10.0v1.0_1141222.pdf"

看日期是2025(114)年12月22日釋出。


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

【影片教學】

應用程式實作影片(2022/12/26更新)/114年GCB實作文件_Microsoft IIS 10.0【ZIP】
直接連結網址
https://download.nics.nat.gov.tw/api/v4/file-service/UploadFile/attachfilegcb/114%E5%B9%B4GCB%E5%AF%A6%E4%BD%9C%E6%96%87%E4%BB%B6_Microsoft%20IIS%2010.0v1.0_1141229.zip
下載得到 "114年GCB實作文件_Microsoft IIS 10.0v1.0_1141229.zip"
解壓得到 "114年GCB實作文件_Microsoft IIS 10.0v1.0_1141229.mp4"   75.2 MB

看日期是2025(114)年12月29日釋出。


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

優點

  • NICS 官方文件

缺點

  • 這是對 IIS 的 GCB,不是對 ASP.NET  WebForm 或其他 IIS 之下特定框架的 GCB,例如:TWGCB-04-014-0022,ASP.NET設定建議,.NET信任層級,trust level 只要不是 Full,對目前 ASP.NET WebForm (.NET Framework 4.8) 架構,直接無法使用。
[研究]GCB,IIS,ASP.NET設定建議,.NET信任層級(trust leve)實測(一)
https://shaurong.blogspot.com/2026/01/gcbiisaspnetnettrust-leve.html
[研究]GCB,IIS,ASP.NET設定建議,.NET信任層級(trust leve)實測(二)
https://shaurong.blogspot.com/2026/01/gcbiisaspnetnettrust-leve_23.html
  • 比較合適不再更新的網站,因它沒考慮程式碼 Deploy更新後,IIS 的 GCB 設定被覆蓋的問題
  • 沒考慮國情,TWGCB-04-014-0028 「允許高位元字元」不允許後,系統於URL參數、檔案上傳及下載作業中若包含繁體中文字,將發生錯誤。
    (若一定要達成,程式不難改,只要花時間,把所有網頁、下載、匯出等檔案名稱改用英數字,使用者則強迫僅能上傳英數字命名檔案,但有些中文改用英文可能不太知道是甚麼意思,沒有中文方便)
[研究] IIS 10.0 GCB "要求篩選與其他限制模組","允許高位元字元" 實測
  • 只有教設定,系統異常了設定者要自己研究想辦法解決。
  • 如果再牽扯到設定繼承是否允許、覆蓋是否允許、、、問題將非常複雜。

目前本 Blog 相關文章請參考
https://www.google.com/search?q=GCB+IIS+site%3Ashaurong.blogspot.com

(完)

2026年1月23日 星期五

[研究]GCB,IIS,"要求篩選","允許未列出的副檔名"取消勾選,"允許副檔名" 首頁處理

[研究]GCB,IIS,"要求篩選","允許未列出的副檔名"取消勾選,"允許副檔名" 首頁處理

2026-01-23

.aspx 加入允許名單

下圖,同一個網站,https://localhost/default.aspx  正常


下圖,同一個網站,https://localhost/  被攔截了



下圖,解決方法,新增一個 "." (句點),沒有副檔名名稱的檔案

下圖,否則網站有設定預設首頁也沒用

(完)

[研究] IIS 10.0 GCB "要求篩選與其他限制模組","允許未列出的副檔名" ,那些副檔名被攔截,實測

[研究] IIS 10.0 GCB "要求篩選與其他限制模組","允許未列出的副檔名" ,那些副檔名被攔截,實測

2026-01-20

2026-05-14 修訂

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

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設定值
31TWGCB-04-014-0031要求篩選與其他限制模組允許未列出的副檔名▪這項原則設定決定是否允許未列出的副檔名在網頁伺服器上被執行
▪限制網頁伺服器只能執行特定之檔案類型,可提升安全性
▪在取消勾選「允許未列出的副檔名」後,必須將網站中所有使用到之副檔名(例如:.asax、.cs及.html等)加入允許清單,網頁才能正常運作
伺服器▪取消勾選:
IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\編輯功能設定\一般\不勾選「允許未列出的副檔名」
▪新增允許副檔名:
IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\允許副檔名
不允許


下圖,程式在 Visual Studio 2019 中執行正常


下圖,

Deploy 後,照 GCB 要求設定「允許未列出的副檔名」為「不允許」


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

2026-05-04上面訊息變了,不是 404.7 了


伺服器錯誤

404 - 找不到檔案或目錄。

您要尋找的資源可能已移除、名稱已變更,或暫時無法使用。


.odt下載失敗問題請看這篇
https://shaurong.blogspot.com/2026/05/odt.html

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

HTTP 錯誤 404.7 - Not Found

要求篩選模組設定為拒絕副檔名。


最有可能的原因:

已為網頁伺服器設定要求篩選,並且明確拒絕此要求的副檔名。


解決方法:

確認 applicationhost.config 和 web.config 中的 configuration/system.webServer/security/requestFiltering/fileExtensions 設定。


詳細錯誤資訊:

模組    RequestFilteringModule

通知    BeginRequest

處理常式    ExtensionlessUrlHandler-Integrated-4.0

錯誤碼    0x00000000

要求的 URL    https://localhost:443/

實體路徑    D:\Production\Test443

登入方法    尚未判定

登入使用者    尚未判定


詳細資訊:

此為安全性功能。除非完全瞭解變更的範圍,否則請勿變更此功能。如果要允許要求的副檔名,則移除 configuration/system.webServer/security/requestFiltering/fileExtensions 中拒絕的副檔名。

檢視詳細資訊 »

**********

下圖,上圖點 "檢視詳細資訊"

檢視網站目錄中檔案,添加允許的副檔名

移除 .config、新增 .config  (預設有,但為 False,無法變更設定,只好刪除後,新增允許)

新增 .aspx、.axd、.dll、.exe、.pdb、.rsp、.targets

註:.axd 檔案是動態產生的,不在目錄中。

依然失敗,訊息沒有明確說明哪個副檔名被禁止,微軟 Microsoft 官方也沒有公布全部 ASP.NET WebForm 會用的副檔名清冊。

而且還有第三方元件用到的所有檔案的副檔名也是一個問題,看得到的好添加,若動態產生的新副檔名的也難預知。

暫時無解,建議排除。

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

2026-01-16補

實際測試,「網站」層級設定可以覆蓋「伺服器」層級設定。

【「允許未列出的副檔名」設定為「不允許」】

「伺服器」層級設定修改 C:\Windows\System32\inetsrv\config\applicationHost.config

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <fileExtensions allowUnlisted="false" />
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

「網站」層級修改網站根目錄 Web.Config

<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <fileExtensions allowUnlisted="false" />
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

(看起來相同)


【副檔名白名單】

「伺服器」層級設定修改 C:\Windows\System32\inetsrv\config\applicationHost.config

<requestFiltering>
   <fileExtensions allowUnlisted="false">
      <add fileExtension=".aspx" allowed="true" />
   </fileExtensions>
</requestFiltering>

「網站」層級修改網站根目錄 Web.Config

<requestFiltering>
   <fileExtensions allowUnlisted="false">
      <add fileExtension=".aspx" allowed="true" />
   </fileExtensions>
</requestFiltering>

(看起來相同)


(完)

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的指令動詞" 變成不勾選

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的指令動詞" 變成不勾選

2025-01-23

TWGCB-04-014-0031 是 "允許未列出的副檔名",

但 "允許未列出的副檔名" 不在 GCB 要求中,

ASP.NET WebForm,在測試 IIS 10.0 GCB,"要求篩選","允許未列出的副檔名","允許副檔名",Web.Config 過程中,不知何時、何原因,某些網站 "允許未列出的指令動詞" 變成不勾選


ChatGPT 提的一堆檢查都不是,但有句話值得注意,

副檔名 (File Extensions) 與 指令動詞 (HTTP Verbs) 是同一個模組:Request Filtering

關聯影響有空再研究、、、

(待研究)



2026年1月20日 星期二

[研究]IIS 10.0 GCB,"要求篩選" 更新 "允許副檔名" 羅生門

[研究]IIS 10.0 GCB,"要求篩選" 更新 "允許副檔名" 羅生門

2026-01-20

ASP.NET WebForm 方案1 和 方案2 測試 IIS "要求篩選"

IIS「伺服器」層級 "要求篩選" "允許未列出副檔名" 不勾選 (不允許)

IIS「網站」層級 (方案1) "要求篩選" "允許未列出副檔名" 沒勾選 (不允許)

IIS「網站」層級 (方案2) "要求篩選" "允許未列出副檔名" 沒勾選 (不允許)

實際測試

測試1: 方案1 在 Visual Studio 2019 做 Deploy 後,Web.Config 中允許的副檔案有被添加到「網站」層級 "要求篩選" 的 "副檔名" 名單中,

測試2: 方案2 在 Visual Studio 2019 做 Deploy 後,Web.Config 中允許的副檔案有卻沒被添加到「網站」層級 "要求篩選" 的 "副檔名" 名單中,

請問測試2副檔名為何沒被添加 ?


*****

和 ChatGPT 聊了老半天,發現還有些設定或情況會 "允許副檔名" 名單會否更新的,但談到最後愈來愈複雜,且都沒找到原因。

目前比較穩定的作法是"要求篩選" ""允許未列出副檔名" 的相關設定,不要改「網站」層級,改「伺服器」層級 ( GCB 也是說改「伺服器」層級)

(待續)

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的副檔名" 不勾選,實測 .axd 檔案(二)

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的副檔名" 不勾選,實測 .axd 檔案(二)

2025-01-20

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

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

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
    Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>動態生成檔案範例</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <div>
            <asp:Label ID="Label1" runat="server" Text="按下按鈕會生成動態 .axd 檔案"></asp:Label>
            <br />
            <br />
            <asp:Button ID="Button1" runat="server" Text="生成動態檔案" OnClick="Button1_Click" />
        </div>
    </form>
</body>
</html>

Default.aspx.cs

using System;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            // 產生一個 WebResource 的動態 URL
            // ASP.NET 會生成 WebResource.axd 來提供內嵌資源
            string scriptUrl = this.Page.ClientScript.GetWebResourceUrl(typeof(Default), "WebFormDynamicFileDemo.Scripts.Sample.js");

            Label1.Text = "動態生成的 .axd URL: <a href='" + scriptUrl + "' target='_blank'>" + scriptUrl + "</a>";
        }
    }
}

實際測試




雖然之前的測試的案例,.axd 是不用加入 "允許副檔名" 的名單就可運作;且 ChatGPT 也說理論上是不需要加入的;

但這個範例,不加入是無法運作。

下圖,加入 .axd 後,仍無法運作,變成另一種問題。


****************************************
和 ChatGPT 談很久,總結它的觀點

「不用加入白名單的 .axd」,其實只限於 ASP.NET 內建的 HTTP Handler 處理的動態資源 WebResource.axd 和 ScriptResource.axd

非 ASP.NET WebForm 架構內建的 HTTP Handler 處理,而是自己程式中的 URL 的 .axd,還是要加入白名單



(完)

相關

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

https://shaurong.blogspot.com/2026/01/iis-100-gcb-aspnet-webform.html


[研究]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 不要加入白名單,否則安全風險大

(完)

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的副檔名" 不勾選,實測 .axd 檔案(一)

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的副檔名" 不勾選,實測 .axd 檔案(一)

2025-01-20

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

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

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" 
    Inherits="WebApplication1.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <!-- ScriptManager 會產生 ScriptResource.axd -->
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>

        <div>
            <asp:Label ID="Label1" runat="server" Text="Hello, WebForms!"></asp:Label>
        </div>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:Button ID="Button1" runat="server" Text="更新 Label" 
                    OnClick="Button1_Click" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </form>
</body>
</html>

Default.aspx.cs

using System;

namespace WebApplication1
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 首次載入時顯示時間
            if (!IsPostBack)
            {
                Label1.Text = "頁面首次載入:" + DateTime.Now.ToString("HH:mm:ss");
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            // 更新 Label,這會觸發 UpdatePanel 重新渲染
            Label1.Text = "按鈕點擊時間:" + DateTime.Now.ToString("HH:mm:ss");
        }
    }
}

說明

1.ScriptManager:WebForms 核心控制元件,會在頁面生成時自動產生對應的 .axd 檔案,例如:

  • ScriptResource.axd?d=xxxx → WebForms 內嵌 JavaScript
  • WebResource.axd?d=xxxx → 自訂或第三方嵌入資源

2.UpdatePanel:使用 Ajax 局部更新時,也會向 .axd 發送請求。

3.動態檔案 .axd:

  • IIS 並不會在磁碟產生真實檔案。
  • 它是 ASP.NET 處理管線 (HTTP Handler) 生成的動態回應。
  • FREB(失敗要求追蹤)能夠捕捉這些請求,包括 URL、查詢字串、HTTP Header、狀態碼等。

4/點擊 更新 Label,瀏覽器會發送對 .axd 的請求,且可以在瀏覽器 Network tab 看到,例如:

  • http://localhost:1234/WebResource.axd?d=xxxx&t=yyyy
  • http://localhost:1234/ScriptResource.axd?d=xxxx

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

Visual Studio 2019 中做 Deploy 到 IIS 網站,

「網站」層級


僅新增 .aspx 允許 (沒允許 .axd),測試網站

下圖,按下按鈕後


沒允許 .axd 好像沒關係?

********************************************************************************
IIS "要求篩選" "允許未列出的副檔名" 不勾選, 若 ASP.NET WebForm 會產生 .axd,需要把 .axd 加入 "允許副檔名" 名單嗎?

ChatGPT

結論先講:通常「不用」手動把 .axd 加入 IIS「要求篩選 → 允許副檔名」名單,只要你的站台是正常的 ASP.NET WebForms / ASP.NET 管線,.axd 會被放行。

下面把原因與「什麼情況才需要加」講清楚。

為什麼「不用加 .axd」?

.axd 不是一般靜態檔案,它是:
  • ASP.NET HTTP Handler(例如 ScriptResource.axd、WebResource.axd)
  • 由 ASP.NET Runtime 處理,不是由 IIS 當成實體檔案存取
在 IIS 中的實際流程是:

要求進來 (.axd)
→ 對應到 ASP.NET Handler
→ 由 aspnet_isapi / ASP.NET Core Module 處理
→ 不走「靜態檔案副檔名白名單」那一套

因此:
  • IIS「要求篩選」的「允許副檔名」主要是管「靜態檔案」
  • .axd 屬於「動態處理」 → 不需要列入白名單

微軟預設就是這樣設計的

你可以觀察一個事實:
  1. 在 乾淨的 ASP.NET WebForms 專案
  2. IIS「允許未列出的副檔名」設為 ❌ 不允許
  3. 沒有手動加 .axd
  4. 👉 ScriptResource.axd、WebResource.axd 仍然可以正常下載
這代表:ASP.NET Handler 類型的副檔名,本來就不靠「允許副檔名」存活


什麼情況「可能需要加 .axd」?(少見)

只有在下面「非標準」情況才會遇到問題:

1️⃣ ASP.NET Pipeline 沒有啟用 / 損壞

例如:
  • ASP.NET 角色服務沒裝
  • Application Pool 用錯 .NET CLR
  • Handler mapping 被刪掉
此時 .axd 會被當成「未知副檔名的靜態檔」
→ 才會被要求篩選擋掉

👉 正確作法是修 ASP.NET 設定,不是加 .axd

2️⃣ 使用極端「封鎖一切」的自訂安全規則

例如:
  • URL Rewrite / Request Filtering 規則強制封鎖所有未明確白名單的 URL
  • WAF / 反向代理層阻擋 .axd
這不是 IIS 的標準行為,而是 額外安全設備或規則

實務建議(重點)
✅ 正確作法
  • 不要把 .axd 當成一般副檔名管理
  • 確保:
    • ASP.NET 已正確安裝
    • Handler Mappings 存在
    • Application Pool 的 .NET CLR 正確
❌ 不建議
  • 為了怕被擋就亂加 .axd
  • 把所有「動態副檔名」都加進允許清單
這樣會讓:
  • 副檔名白名單失去意義
  • 安全性反而下降

一句話總結
  • IIS「允許未列出的副檔名」不勾選時,ASP.NET WebForms 產生的 .axd
  • 正常情況下「不需要」加入「允許副檔名」清單
  • 若被擋,應檢查 ASP.NET Handler / Pipeline,而不是副檔名白名單


後續

[研究]IIS 10.0 GCB,"要求篩選","允許未列出的副檔名" 不勾選,ASP.NET WebForm 動態生成的檔案,副檔名都不用加入"允許副檔名" 名單嗎?
https://shaurong.blogspot.com/2026/01/iis-100-gcb-aspnet-webform.html

(完)

相關

[研究]GCB,IIS 「IP位址及網域限制」的「動態 IP 限制設定」實測

[研究]GCB,IIS 「IP位址及網域限制」的「動態 IP 限制設定」實測

2026-01-20


動態 IP 限制設定


根據同時要求的數目拒拒絕 IP位址(C)

同時要求的最大數目(N):1


根據超過一段時間之要求數目拒絕IP位址(R)

要求的最大數目(M):1

時間間隔(以毫秒表示)(T):1


下圖,正常情況


下圖,用兩台不同 IP 同時去連,

**********

因為測試不方便,直接問 ChatGPT

請問下面3個設定值如果達到設定限制,出現甚麼錯誤

同時要求的最大數目(N)、要求的最大數目(M)、時間間隔(以毫秒表示)(T)

ChatGPT

設定項目 達到限制時 IIS 行為 HTTP 狀態碼
同時要求最大數 (N) 同時第 2 個 request 立即拒絕 403.502
要求最大數 (M) T 內第 2 次 request 立即拒絕 403.502
時間間隔 (T) 與 M 搭配使用 決定 M 的計算窗口 無獨立錯誤

403.502 意義

HTTP Error 403.502 – Forbidden
The request was rejected because the client IP address has exceeded the request limit.

中文

HTTP 錯誤 403.502 – 禁止
要求已遭拒,因為用戶端 IP 位址已超過要求限制。

IIS 詳細錯誤頁面

Module:     DynamicIpRestrictionModule
Notification: BeginRequest
Handler:    Not yet determined
Error Code: 0x00000000

(完)

2026年1月19日 星期一

[研究]實測,GCB,IIS,要求篩選,「允許未列出的副檔名」和「副檔名」列表

[研究]實測,GCB,IIS,要求篩選,「允許未列出的副檔名」和「副檔名」列表

2026-01-19

偶然發現,ASP.NET WebForm 網站 deploy 後,「網站」層級「允許未列出的副檔名」和「副檔名」列表會自動從 IIS「伺服器」層級設定重新覆蓋;所以去改「網站」層級沒有意義,除非不再 Deploy 新 CODE。



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

2026-01-19 補

測試1:Visual Studio 2019 直接 Deploy CODE 到 真實網站目錄,「伺服器」層級「允許未列出的副檔名」和「副檔名」列表會覆蓋「網站」層級設定。

測試2:把真實網站目錄拷貝走,修改設定,目錄拷貝回來覆蓋,設定存在。

測試3:Visual Studio 2019 直接 Deploy  \bin\app.publish 目錄,再拷貝覆蓋掉真實目錄,「伺服器」層級「允許未列出的副檔名」和「副檔名」列表會覆蓋「網站」層級設定。

測試4:「網站」層級新增、刪除一個副檔名後,會反映到 Web.Config,似乎以「伺服器」層級為 Base 的相對設定。
<configuration>
    <system.webServer>
        <security>
            <requestFiltering>
                <fileExtensions allowUnlisted="false">
                    <remove fileExtension=".asax" />
                    <add fileExtension=".aaa" allowed="true" />
                </fileExtensions>
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>


測試5:

狀況A:「伺服器」層級「允許未列出的副檔名」打勾(允許)(沒有.aspx);「網站」層級「允許未列出的副檔名」不打勾(不允許),網站可以跑。

狀況B:「伺服器」層級「允許未列出的副檔名」不打勾(不允許)(沒有.aspx);「網站」層級「允許未列出的副檔名」不打勾(不允許),網站可以跑。

測試6:就算是 .png 檔案,沒有允許也會看不到圖片



測試7:
.css 也要允許才行

測試8:
.dll 不需要允許



(完)

[研究]GCB,IIS,要求篩選,列出某目錄(含子目錄)所有副檔名種類的 .bat,需要明確允許名單

[研究]GCB,IIS,要求篩選,列出某目錄(含子目錄)所有副檔名種類的 .bat,需要明確允許名單

2025-01-16 

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

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

.bat 內容

@echo off
set "folder=D:\Production\OT"
set "tmpfile=%temp%\extlist.txt"

if exist "%tmpfile%" del "%tmpfile%"

for /r "%folder%" %%f in (*) do (
    echo %%~xf >> "%tmpfile%"
)

sort "%tmpfile%" /unique
del "%tmpfile%"

測試


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

【考慮副檔名有多節,全部副檔名相同才算相同,否則算不同】


.bat 內容

@echo off

setlocal enabledelayedexpansion

set "folder=D:\目錄\子目錄"
set "outfile=extensions.txt"

type nul > "%outfile%"

for /r "%folder%" %%f in (*) do (
    set "name=%%~nxf"
    if not "!name!"=="!name:.=!" (
        set "ext=.!name:*.=!"
        echo !ext!>>"%outfile%"
    )
)

sort "%outfile%" /unique


測試


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

IIS 10.0 要求篩選,"允許未列出的副檔名" 若不勾選,

"允許副檔名" 新增 .aspx,那

abd.aspx

abd.def.aspx 

是否都可以執行?還是只有第一個可執行?第2個不可執行?

它以最後一節判斷?還是全部副檔名判斷?

ChatGPT

結論先講:IIS 是「只看最後一節副檔名」來判斷。

敝人實際測試,確實「只看最後一節副檔名」來判斷。

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

【實測】

一個很簡單的 ASP.NET WebFom 網站

.aspx
.config
.dll
.exe
.pdb
.rsp
.targets

副檔名 用途 瀏覽器可請求 正式站台
.aspx Web 頁面 ✅ ✅
.config 組態設定 ❌ ✅
.dll 已編譯程式碼 ❌ ✅
.exe 可執行檔 ❌ ❌
.pdb 除錯資訊 ❌ ❌
.rsp 編譯參數 ❌ ❌
.targets MSBuild 規則 ❌ ❌

ChatGPT 說需要明確允許的只有 .aspx 

*****

ASP.NET WebFom 網站O

.ascx
.aspx
.compiled
.config
.css
.dll
.eot
.gif
.htm
.html
.jpg
.js
.map
.master
.otf
.pdb
.pdf
.png
.pptx
.scss
.svg
.ttf
.txt
.woff
.woff2
.xlsx

副檔名 用途 / 存取方式 是否需要明確允許 說明
.ascx ASP.NET User Control(嵌入頁面片段) ✅ 需要允許,否則無法被 .aspx 載入。
.aspx ASP.NET WebForm 頁面 ✅ 必須允許才能執行頁面。
.compiled ASP.NET 編譯後的控制項 / 頁面 ❌ 內部使用,非 HTTP 存取,Request Filtering 不影響。
.config web.config / app.config ❌ (建議封鎖) 不建議允許 HTTP 存取,避免洩漏設定。
.css 樣式表 ✅ 靜態檔案,需要允許才能載入。
.dll .NET 程式集檔案 ❌ 內部載入,不受 Request Filtering 影響。
.eot 字型檔 (Embedded OpenType) ✅ 用戶端請求需要允許。
.gif 靜態圖片 ✅ 用戶端請求需要允許。
.htm / .html 靜態網頁 ✅ 用戶端請求需要允許。
.jpg 靜態圖片 ✅ 用戶端請求需要允許。
.js JavaScript 檔案 ✅ 用戶端請求需要允許。
.map JavaScript / CSS source map ✅ 用戶端調試需要允許(非必要,可依需求封鎖)。
.master ASP.NET Master Page ✅ 必須允許,否則 .aspx 無法正確引用。
.otf 字型檔 (OpenType) ✅ 用戶端請求需要允許。
.pdb 除錯符號檔 ❌ (建議封鎖) 不需要用戶端存取。
.pdf 文件 / 靜態檔案 ✅ 用戶端請求需要允許。
.png 靜態圖片 ✅ 用戶端請求需要允許。
.pptx Office 文件 ✅ 用戶端請求需要允許。
.scss SASS 原始檔案 ❌ (建議封鎖) 不應提供給用戶端,僅編譯成 CSS 使用。
.svg 向量圖檔 ✅ 用戶端請求需要允許。
.ttf 字型檔 (TrueType) ✅ 用戶端請求需要允許。
.txt 純文字檔 ✅ 用戶端請求需要允許。
.woff 字型檔 (Web Open Font Format) ✅ 用戶端請求需要允許。
.woff2 字型檔 (Web Open Font Format 2) ✅ 用戶端請求需要允許。
.xlsx Excel 文件 ✅ 用戶端請求需要允許。

**********

ASP.NET WebFom 網站S

.7z
.asax
.ascx
.aspx
.config
.css
.csv
.dll
.doc
.docx
.eot
.exe
.flow
.gif
.htm
.html
.ico
.js
.json
.lic
.map
.Master
.md
.msg
.ods
.odt
.pdb
.pdf
.png
.pptx
.rsp
.sitemap
.svg
.targets
.thmx
.ttf
.ttinclude
.txt
.vue
.woff
.woff2
.xlsx
.xml

副檔名 用途 / 存取方式 是否需要明確允許 說明
.7z 壓縮檔,用戶端下載 ✅ 用戶端請求需允許。
.asax ASP.NET 應用程式 Global.asax ✅ 用戶端請求需允許(ASP.NET 初始化時使用)。
.ascx ASP.NET User Control ✅ 必須允許,否則 .aspx 無法載入控制項。
.aspx ASP.NET WebForm 頁面 ✅ 必須允許才能執行頁面。
.config web.config / app.config ❌ (建議封鎖) 敏感檔案,不應允許 HTTP 存取。
.css 樣式表 ✅ 靜態檔案,需要允許才能載入。
.csv 用戶端下載 / 匯出 ✅ 靜態檔案,需要允許。
.dll .NET 程式集檔案 ❌ 內部載入,不受 Request Filtering 影響。
.doc / .docx Office 文件 ✅ 用戶端請求需允許。
.eot 字型檔 (Embedded OpenType) ✅ 用戶端請求需允許。
.exe 執行檔 ❌ (建議封鎖) 不應允許 HTTP 存取,安全風險高。
.flow 流程檔案 / 專案檔(內部使用) ❌ (建議封鎖) 不需要用戶端存取。
.gif 靜態圖片 ✅ 用戶端請求需允許。
.htm / .html 靜態網頁 ✅ 用戶端請求需允許。
.ico 圖示 / favicon ✅ 用戶端請求需允許。
.js JavaScript ✅ 用戶端請求需允許。
.json 靜態資料 / 配置檔 ✅ 用戶端請求需允許(如前端 AJAX)。
.lic 授權檔案 ❌ (建議封鎖) 不應公開,避免洩漏授權資訊。
.map JS / CSS source map ✅ 用於開發 / 調試,非必要可封鎖。
.master ASP.NET Master Page ✅ 必須允許,否則 .aspx 無法正確引用。
.md Markdown 文件 ✅ 用戶端下載 / 查看需允許。
.msg Outlook 郵件檔 ✅ 用戶端下載需允許。
.ods / .odt OpenDocument 文件 ✅ 用戶端下載需允許。
.pdb 除錯符號檔 ❌ (建議封鎖) 不需要用戶端存取。
.pdf 文件 / 靜態檔案 ✅ 用戶端下載需允許。
.png 靜態圖片 ✅ 用戶端請求需允許。
.pptx Office 文件 ✅ 用戶端請求需允許。
.rsp 編譯回應 / Response files ❌ (建議封鎖) 內部使用,不需要用戶端存取。
.sitemap 網站導覽檔 ✅ 用戶端或搜尋引擎請求需允許。
.svg 向量圖檔 ✅ 用戶端請求需允許。
.targets MSBuild Targets ❌ (建議封鎖) 內部使用,不需要用戶端存取。
.thmx PowerPoint / Office 主題文件 ✅ 用戶端下載需允許。
.ttf 字型檔 (TrueType) ✅ 用戶端請求需允許。
.ttinclude Web / 模板包含檔(專案內部) ❌ (建議封鎖) 內部使用,不需要用戶端存取。
.txt 純文字檔 ✅ 用戶端請求需允許。
.vue Vue 前端程式檔案 ✅ 用戶端請求需允許(如果直接暴露在網站上)。
.woff 字型檔 (Web Open Font Format) ✅ 用戶端請求需允許。
.woff2 字型檔 (Web Open Font Format 2) ✅ 用戶端請求需允許。
.xlsx Excel 文件 ✅ 用戶端請求需允許。
.xml 靜態資料 / 配置檔 ✅ 用戶端請求需允許(如 sitemap.xml 或 API)。

(完)

相關

[研究]Windows Server 2019 IIS 10.0 預設副檔名列表

[研究]Windows Server 2019 IIS 10.0 預設副檔名列表

2026-01-19

留著參考,看預設值是甚麼。



共 43 個
.ad
.adprototype
.asax
.ascx
.browser
.cd
.compiled
.config
.cs
.csproj
.dd
.dsdgm
.dsprototype
.exclude
.java
.jsl
.ldb
.ldd
.lddprototype
.ldf
.licx
.lsad
.lsaprototype
.master
.mdb
.mdf
.msgx
.refresh
.resources
.resx
.rules
.sd
.sdm
.sdmDocument
.sitemap
.skin
.ssdgm
.ssmap
.vb
.vbproj
.vjsproj
.vsdisco
.webinfo


副檔名 用途說明 IIS / ASP.NET 是否會用 備註(安全面)
.ad 舊式 IIS / ODBC 資料描述檔 ❌ 建議封鎖
.adprototype SharePoint / 設計工具暫存 ❌ 幾乎不該外露
.asax ASP.NET 應用程式事件(Global.asax) ✅ 必須封鎖下載
.ascx ASP.NET 使用者控制項 ✅ 必須封鎖
.browser ASP.NET Browser 定義檔 ✅ 不應被下載
.cd Visual Studio 元件描述 ❌ 可封鎖
.compiled ASP.NET 預編譯標記檔 ✅ 內部用
.config 設定檔(web.config) ✅ 一定要封鎖
.cs C# 原始碼 ❌ 絕不可外洩
.csproj C# 專案檔 ❌ 開發階段
.dd Visual Studio 設計資料 ❌
.dsdgm Dataset 設計圖 ❌
.dsprototype 資料集原型檔 ❌
.exclude 發佈排除清單 ❌
.java Java 原始碼 ❌
.jsl 舊式 JScript.NET ❌ 幾乎淘汰
.ldb Access Lock 檔 ❌
.ldd SQL Server 設計階段檔 ❌
.lddprototype SQL Server 原型檔 ❌
.ldf SQL Server Log File ❌ 極敏感
.licx .NET 元件授權清單 ❌
.lsad SharePoint / VS 設計檔 ❌
.lsaprototype SharePoint 原型 ❌
.master ASP.NET Master Page ✅ 必須封鎖
.mdb Access 資料庫 ❌ 高風險
.mdf SQL Server Data File ❌ 極敏感
.msgx 舊 ASP.NET 訊息資源 ⚠️ 罕見
.refresh Visual Studio 自動重整 ❌
.resources .NET 編譯後資源 ❌
.resx .NET 資源原始檔 ❌
.rules URL Rewrite 規則 ⚠️ 依環境
.sd VS 設計資料 ❌
.sdm VS 設計模型 ❌
.sdmDocument VS 設計文件 ❌
.sitemap ASP.NET Sitemap ✅ 不應下載
.skin ASP.NET Theme Skin ✅
.ssdgm Server Explorer Diagram ❌
.ssmap SourceSafe 對應 ❌
.vb VB.NET 原始碼 ❌
.vbproj VB.NET 專案檔 ❌
.vjsproj JScript.NET 專案檔 ❌
.vsdisco Web Service Discovery ⚠️ 已過時
.webinfo IIS / VS 發佈資訊 ❌

(完)

[研究]IIS安裝「失敗要求的追蹤規則(IIS Failed Request Tracing(FREB))」

[研究]GCB,要求篩選,IIS安裝「失敗要求的追蹤規則(IIS Failed Request Tracing(FREB))」

2026-01-10

環境:Windows Server 2019 標準版 + IIS 10.0













(完)