顯示具有 ASP.NET設定建議 標籤的文章。 顯示所有文章
顯示具有 ASP.NET設定建議 標籤的文章。 顯示所有文章

2026年1月16日 星期五

[研究]IIS 10 GCB,ASP.NET設定建議,ASP.NET堆疊追蹤,移除或關閉 Trace

[研究]IIS 10 GCB,ASP.NET設定建議,ASP.NET堆疊追蹤,移除或關閉 Trace

2026-01-16

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設定值
17TWGCB-04-014-0017ASP.NET設定建議ASP.NET堆疊追蹤▪這項原則設定決定是否關閉網頁堆疊追蹤模式
▪ASP.NET可透過設定<trace>元素來控制如何被蒐集、儲存及顯示追蹤結果。啟用追蹤後,每個網頁都會要求加入追蹤訊息,這些訊息會附加到頁面輸出或儲存在應用程式追蹤紀錄,建議停用追蹤,以減少惡意人士取得詳細追蹤資訊之風險
▪雖然以retail模式部署Web應用程式時,即會停用追蹤輸出,但基於縱深防禦概念,額外再設定停用追蹤功能,可降低因設定錯誤所造成之影響
▪伺服器
▪站台
▪網頁
▪伺服器級別設定:machine.config與web.config
▪站台級別與每個ASP.NET網站級別個別設定:IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\trace\enabled
▪自設定檔與ASP.NET網頁中,移除所有Trace="true"或trace enabled="true"內容
▪False




ChatGPT

情境trace / Stack Tracing 預設值GCB 建議設定
ASP.NET (預設)通常 off / disabled。許多文件指出若不特別設定 <trace enabled="true"> 或 @ Page Trace="true",則 tracing 是關閉的。 (Tenable®)False (也就是關閉 tracing) (Scribd)
開發 / 測試 環境常開啟 <trace enabled="true"> 或在頁面上 Trace="true",以方便除錯與追蹤流程— (視情況)
生產環境 (依 GCB)關閉 (remove trace / trace enabled = false)符合 GCB 建議

「設定位置」、「設定路徑」、「GCB設定值」欄位寫的有些混亂南棟,預設值和GCB 建議值似乎相同。

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

Web.Config 會多了 <trace enabled="false" />

<configuration>
  <system.web>
    <compilation targetFramework="4.8" />
    <httpRuntime targetFramework="4.8" />
        <machineKey validation="HMACSHA256" />
        <trace enabled="false" />
  </system.web>
</configuration>

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

建議

環境建議設定
開發機true(方便除錯,可短期開啟)
測試機false(預設關閉,必要時 true 且 localOnly)
正式機false(安全必須關閉)

開發機若設定 false,

✔ 適合原因
  • 不影響系統正常運作
  • 符合 GCB 與安全預設值
  • 不會誤曝敏感資訊
⚠️ 代價
  • 無法使用 /trace.axd
  • 無法看到 Page Life Cycle / Control Tree
  • Debug 需改用:
    • Visual Studio Debugger
    • Logging(Serilog / NLog)
    • Debug.WriteLine
********************************************************************************
此值預設 false,ASP.NET 系統預設不啟用 Trace。

(完)

[研究]IIS 10.0 GCB,實測 Web.Config 多甚麼 - HMACSHA256

[研究]IIS 10.0 GCB,實測 Web.Config 多甚麼 - HMACSHA256

2025-01-16

IIS 10.0 套用 GCB 後,有些會變更現有 Web.Config 設定,要回頭改 Source Code,否則下次 Deploy 後,GCB 設定會被覆蓋消失。

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

【Web.Config 多了 <machineKey validation="HMACSHA256" />】

<configuration>
  <system.web>
    <compilation targetFramework="4.8" />
    <httpRuntime targetFramework="4.8" />
        <machineKey validation="HMACSHA256" />
  </system.web>
</configuration>

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

政府組態基準(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設定值
21TWGCB-04-014-0021ASP.NET設定建議電腦金鑰(ASP.NET 4.5)▪這項原則設定決定ASP.NET 4.5環境之電腦金鑰使用何種驗證方式
▪使用電腦金鑰,可設定加密及解密金鑰,用以協助保護表單驗證之Cookie資料與網頁層級的檢視狀態資料。電腦金鑰也可用來驗證跨處理序工作階段狀態識別
▪系統採用ASP.NET 4.5版本時,支援下列驗證方法:
(1)AES(金鑰長度可為128, 192或256位元)
(2)MD5
(3)SHA1
(4)TripleDES(金鑰長度為192位元)
(5)HMACSHA256
(6)HMACSHA384
(7)HMACSHA512
▪ASP.NET 4.5環境預設電腦金鑰驗證方法為SHA256
▪在變更.NET Framework版本設定中,分別有v2.0.x與v4.0.x兩種選項,「v4.0.x」表示.NET Framework版本包含4.5,則適用此項原則設定
▪確認版本方式:IIS管理員\伺服器\動作\變更.NET Framework版本,開啟確認版本
站台IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\machineKey\validationHMACSHA256、HMACSHA384或HMACSHA512

(完)

相關

2026年1月13日 星期二

[研究]IIS 10.0 GCB "ASP.NET設定建議",".NET信任層級"

[研究]IIS 10.0 GCB "ASP.NET設定建議",".NET信任層級"

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設定值
22TWGCB-04-014-0022ASP.NET設定建議.NET信任層級▪這項原則設定決定是否指定套用到應用程式之程式碼存取安全性(Code Access Security, CAS)層級
▪可選擇之信任層級如下:
(1)Full(internal):指定未限制的權限。授予ASP.NET應用程式權限,以存取受制於作業系統安全性之任何資源。支援所有特殊權限操作。
(2)High(web_hightrust.config):指定高程式碼存取安全性層級,ASP.NET應用程式預設無法執行下列任何一個動作:
  • 呼叫Unmanaged程式碼
  • 呼叫處理的元件
  • 寫入事件日誌
  • 存取「訊息佇列」服務佇列
  • 存取ODBC、OleDb或Oracle資料來源
(3)Medium(web_mediumtrust.config):指定中程式碼存取安全性層級,表示除了高信任層級限制外,ASP.NET應用程式預設無法執行下列任何一個動作:
  • 在應用程式目錄外存取檔案
  • 存取登錄
  • 進行網路或網頁服務呼叫
(4)Low(web_lowtrust.config):指定低程式碼存取安全性層級,表示除了中信任層級限制外,ASP.NET應用程式預設無法執行下列任何一個動作:
  • 寫入檔案系統
  • 呼叫Assert方法
(5)Minimal(web_minimaltrust.config):指定最小的程式碼存取安全性層級,表示ASP.NET應用程式只具有執行權限
▪預設信任層級為Full(internal)
站台IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\trust\levelMedium (web_mediumtrust.config)、Low (web_lowtrust.config)或Minimal (web_minimaltrust.config)



,ASP.NET設定建議,.NET信任層級,

.NET信任層級 = Code Access Security, CAS = partial trust

[研究]「ASP.NET 部分信任 (Partial Trust)」的 3rd Party 套件/元件支援狀況
此值設定 Medium 會導致 Aspose.Cells, ClosedXML, ClosedXML.Parser, FreeSpire.PDF, NReco.PdfGenerator, WkHtmlToPdf, System.Reflection.Emit 相關套件(FastMember, LinqKit) 、、無法使用。

Can't execute under partial trust - SecurityException: System.Security.Permissions.EnvironmentPermission #1669

Web伺服器上的權限信任
所有Aspose .NET元件都需要設定完全信任權限

CAS被微軟棄用,建議設定Full,否則很多程式庫不能用。

Code Access Security
Because Code Access Security is deprecated, most modern code within the .NET ecosystem is not designed to operate within a partial trust environment. Applications that rely on CAS should not expect modern libraries to behave correctly within these environments, unless the library developer has taken explicit steps to ensure compatibility within the CAS sandbox.
由於程式碼存取安全性 (CAS) 已被棄用,.NET 生態系統中的大多數現代程式碼並非設計用於在部分信任環境中運作。依賴 CAS 的應用程式不應期望現代函式庫在這些環境中正常運行,除非函式庫開發者已採取明確措施確保其與 CAS 沙箱的兼容性。

[研究]GCB,IIS,\system.web\trust\level 變更影響?

[研究]「ASP.NET 部分信任 (Partial Trust)」的支援狀況

微軟對 .NET 4.0 開始宣導使用 Full Trust 。

預設值 Full,GCB 建議值 Medium (web_mediumtrust.config)、Low (web_lowtrust.config)或Minimal (web_minimaltrust.config)。但微軟對 .NET 4.0 開始宣導使用 Full Trust,建議排除。

********************************************************************************
(完)

2025年11月13日 星期四

[研究]「ASP.NET 部分信任 (Partial Trust)」的 3rd Party 套件/元件支援狀況

[研究]「ASP.NET <trust level> 部分信任 (Partial Trust)」的 3rd Party 套件/元件支援狀況

2025-11-13

ChatGPT

ASP.NET trust level(Full, High, Medium, Low, Minimal)主要限制了應用程式可以存取的系統資源,例如檔案系統、反射、COM、非託管程式碼等。許多現代套件在 Medium 或以下環境會無法正常運作,尤其是需要以下功能的套件:

  • 反射(Reflection.Emit 或動態產生程式碼)
  • 非託管程式碼或 P/Invoke
  • IO 權限(存取檔案、暫存、Temp 等)
  • 網路請求(System.Net.HttpClient 或 Sockets)

這是一個非常關鍵的問題,因為「ASP.NET <trust level> 部分信任 (Partial Trust)」的支援狀況,確實隨著 .NET Framework 版本演進逐步退場。

以下是套件在不同 trust level 下可能的行為整理表(依經驗與官方文件判斷,實際還需測試):

Trust Level 可能異常套件 原因 / 說明
High 幾乎所有套件可用 High 幾乎接近 Full trust,允許大部分程式碼執行,僅限制部分高權限操作(如 COM、非託管呼叫)。
Medium Aspose.Cells, FreeSpire.PDF, NReco.PdfGenerator, WkHtmlToPdf, System.Reflection.Emit 相關套件(FastMember, LinqKit) Medium 禁止部分 Reflection.Emit、P/Invoke、檔案系統高權限操作,PDF、Excel、PDF 生成與動態型別映射可能失敗。
Low 幾乎所有需要 IO/Reflection/非託管的套件:Aspose.Cells, FreeSpire.PDF, NReco.PdfGenerator, WkHtmlToPdf, FastMember, LinqKit, AngleSharp (部分 CSS/JS parsing 可能失敗) Low 禁止非託管程式碼與 Reflection.Emit,大量套件在動態型別生成、檔案寫入、網路請求會失效。
Minimal 幾乎全部套件(PDF, Excel, JSON, WebApi, Owin, Autofac, SendGrid, MailKit) Minimal 只允許最基本 CLR 功能,網路、檔案、反射、非託管全部被禁止,現代套件幾乎全都異常。

重點說明:

  • PDF/Excel 套件(Aspose.Cells、FreeSpire.PDF、ClosedXML、NReco.PdfGenerator):通常需要檔案寫入或 Reflection.Emit,Medium 以下就可能失敗。
  • 動態型別/Reflection(FastMember、LinqKit、Enums.NET):Medium 以下禁止 Reflection.Emit,會拋出 SecurityException。
  • 網路/IO 操作(SendGrid、MailKit、RestSharp、HttpClient):Low 或 Minimal 可能被阻擋。
  • 非託管/COM(WkHtmlToPdf、Oracle.ManagedDataAccess):Medium 以下通常無法運作。
  • 前端套件(jQuery, Bootstrap, Moment.js 等)對 ASP.NET trust level 無影響,因為這些都是純 client-side。

套件名稱 版本 High Medium Low Minimal
AngleSharp 0.17.1 ✅ ✅ ⚠️ ❌
AngleSharp.Css 0.17.0 ✅ ✅ ⚠️ ❌
Antlr 3.5.0.2 ✅ ✅ ⚠️ ❌
Aspose.Cells 25.10.0 ✅ ⚠️ ❌ ❌
Autofac 8.4.0 ✅ ✅ ✅ ❌
Autofac.WebApi2 6.1.1 ✅ ✅ ⚠️ ❌
Bootstrap.Datepicker 1.8.0.1 ✅ ✅ ✅ ✅
BouncyCastle.Cryptography 2.6.2 ✅ ✅ ⚠️ ❌
ByteSize 2.1.2 ✅ ✅ ✅ ⚠️
Chart.js 3.7.1 ✅ ✅ ✅ ✅
ClosedXML 0.105.0 ✅ ⚠️ ❌ ❌
ClosedXML.Parser 2.0.0 ✅ ⚠️ ❌ ❌
Common.Logging 3.4.1 ✅ ✅ ✅ ⚠️
Common.Logging.Core 3.4.1 ✅ ✅ ✅ ⚠️
DocumentFormat.OpenXml 3.3.0 ✅ ✅ ⚠️ ❌
DocumentFormat.OpenXml.Framework 3.3.0 ✅ ✅ ⚠️ ❌
EFUtilities 1.0.2 ✅ ✅ ✅ ⚠️
EntityFramework 6.5.1 ✅ ✅ ⚠️ ❌
Enums.NET 5.0.0 ✅ ⚠️ ❌ ❌
ExcelDataReader 3.8.0 ✅ ✅ ⚠️ ❌
ExcelDataReader.DataSet 3.8.0 ✅ ✅ ⚠️ ❌
ExcelNumberFormat 1.1.0 ✅ ✅ ✅ ⚠️
ExtendedNumerics.BigDecimal 3001.1.0.233 ✅ ✅ ⚠️ ❌
FastMember 1.5.0 ✅ ✅ ✅ ⚠️
FastMember.Signed 1.5.0 ✅ ✅ ✅ ⚠️
Font.Awesome 5.15.4 ✅ ✅ ✅ ✅
FontAwesome 4.7.0 ✅ ✅ ✅ ✅
FreeDataExports 1.1.12 ✅ ✅ ⚠️ ❌
FreeSpire.PDF 8.6.0 ✅ ⚠️ ❌ ❌
HtmlSanitizer 9.0.876 ✅ ✅ ⚠️ ❌
HtmlSanitizer 9.0.886 ✅ ✅ ⚠️ ❌
Irony 1.5.3 ✅ ✅ ⚠️ ❌
Irony.NetCore 1.1.11 ✅ ✅ ⚠️ ❌
JetBrains.Annotations 2025.2.2 ✅ ✅ ✅ ⚠️
LinqKit 1.3.8 ✅ ✅ ⚠️ ❌
LinqKit.Core 1.2.8 ✅ ✅ ⚠️ ❌
LogicExtensions 0.0.3 ✅ ✅ ✅ ⚠️
MailKit 4.14.1 ✅ ✅ ⚠️ ❌
MathNet.Numerics.Signed 5.0.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.FriendlyUrls 1.0.2 ✅ ✅ ✅ ⚠️
Microsoft.AspNet.FriendlyUrls.Core 1.0.2 ✅ ✅ ✅ ⚠️
Microsoft.AspNet.FriendlyUrls.Core.zh-Hant 1.0.2 ✅ ✅ ✅ ⚠️
Microsoft.AspNet.Identity.Core 2.2.4 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Identity.Core.zh-Hant 2.2.4 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Identity.EntityFramework 2.2.4 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Identity.EntityFramework.zh-Hant 2.2.4 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Identity.Owin 2.2.4 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Identity.Owin.zh-Hant 2.2.4 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Providers.Core 2.0.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Providers.Core.zh-Hant 2.0.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.ScriptManager.MSAjax 5.0.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.ScriptManager.WebForms 5.0.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Web.Optimization 1.1.3 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Web.Optimization.WebForms 1.1.3 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Web.Optimization.zh-Hans 1.1.3 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.Web.Optimization.zh-Hant 1.1.3 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.WebApi 5.3.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.WebApi.Client 6.0.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.WebApi.Client.zh-Hant 6.0.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.WebApi.Core 5.3.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.WebApi.Core.zh-Hant 5.3.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.WebApi.WebHost 5.3.0 ✅ ✅ ⚠️ ❌
Microsoft.AspNet.WebApi.WebHost.zh-Hant 5.3.0 ✅ ✅ ⚠️ ❌
Microsoft.Bcl.AsyncInterfaces 9.0.10 ✅ ✅ ✅ ⚠️
Microsoft.Bcl.Build 1.0.21 ✅ ✅ ✅ ⚠️
Microsoft.Bcl.Cryptography 9.0.10 ✅ ✅ ⚠️ ❌
Microsoft.Bcl.HashCode 6.0.0 ✅ ✅ ⚠️ ❌
Microsoft.CSharp 4.7.0 ✅ ✅ ✅ ⚠️
Microsoft.Extensions.DependencyInjection 9.0.10 ✅ ✅ ✅ ⚠️
Microsoft.Extensions.DependencyInjection.Abstractions 9.0.10 ✅ ✅ ✅ ⚠️
Microsoft.IO.RecyclableMemoryStream 3.0.1 ✅ ✅ ⚠️ ❌
Microsoft.NETCore.Platforms 7.0.4 ✅ ✅ ✅ ⚠️
Microsoft.Owin 4.2.3 ✅ ✅ ⚠️ ❌
Microsoft.Owin.Host.SystemWeb 4.2.3 ✅ ✅ ⚠️ ❌
Microsoft.Owin.Security 4.2.3 ✅ ✅ ⚠️ ❌
Microsoft.Owin.Security.Cookies 4.2.3 ✅ ✅ ⚠️ ❌
Microsoft.Owin.Security.OAuth 4.2.3 ✅ ✅ ⚠️ ❌
Microsoft.Web.Infrastructure 2.0.0 ✅ ✅ ⚠️ ❌
Microsoft.Win32.Primitives 4.3.0 ✅ ✅ ✅ ⚠️
MimeKit 4.14.0 ✅ ✅ ⚠️ ❌
Modernizr 2.8.3 ✅ ✅ ✅ ⚠️
Modernizr.New 3.4.0 ✅ ✅ ✅ ⚠️
Moment.js 2.30.1 ✅ ✅ ✅ ⚠️
NETStandard.Library 2.0.3 ✅ ✅ ✅ ⚠️
NLog 6.0.5 ✅ ✅ ✅ ⚠️
NLog.Schema 6.0.5 ✅ ✅ ✅ ⚠️
NPOI 2.7.5 ✅ ✅ ⚠️ ❌
NReco.PdfGenerator 1.2.1 ✅ ✅ ⚠️ ❌
NSax 1.0.2 ✅ ✅ ✅ ⚠️
Newtonsoft.Json 13.0.4 ✅ ✅ ✅ ⚠️
Newtonsoft.Json.Bson 1.0.3 ✅ ✅ ⚠️ ❌
Npoi.Mapper 6.2.2 ✅ ✅ ⚠️ ❌
Oracle.ManagedDataAccess 23.26.0 ✅ ⚠️ ❌ ❌
Owin 1.0 ✅ ✅ ✅ ⚠️
Portable.BouncyCastle 1.9.0 ✅ ✅ ⚠️ ❌
ProDotNetZip 1.20.0 ✅ ✅ ⚠️ ❌
RBush 4.0.0 ✅ ✅ ✅ ⚠️
RBush.Signed 4.0.0 ✅ ✅ ✅ ⚠️
Respond 1.4.2 ✅ ✅ ✅ ⚠️
RestSharp 106.15.0 ✅ ✅ ⚠️ ❌
RestSharp 112.1.0 ✅ ✅ ⚠️ ❌
Select2.js 4.0.13 ✅ ✅ ✅ ⚠️
SendGrid 9.29.3 ✅ ✅ ⚠️ ❌
SendGrid.CSharp.HTTP.Client 3.4.12 ✅ ✅ ⚠️ ❌
SendGrid.SmtpApi 1.4.6 ✅ ✅ ⚠️ ❌
SharpZipLib 1.4.2 ✅ ✅ ⚠️ ❌
SixLabors.Fonts 1.0.1 ✅ ✅ ✅ ⚠️
SixLabors.ImageSharp 3.1.11 ✅ ✅ ⚠️ ❌
Swashbuckle 5.6.0 ✅ ✅ ⚠️ ❌
Swashbuckle.Core 5.6.0 ✅ ✅ ⚠️ ❌
System.AppContext 4.3.0 ✅ ✅ ✅ ⚠️
System.Buffers 4.6.1 ✅ ✅ ✅ ⚠️
System.Collections 4.3.0 ✅ ✅ ✅ ⚠️
System.Collections.Concurrent 4.3.0 ✅ ✅ ✅ ⚠️
System.Collections.Immutable 9.0.10 ✅ ✅ ✅ ⚠️
System.Configuration.ConfigurationManager 9.0.10 ✅ ✅ ✅ ⚠️
System.Console 4.3.1 ✅ ✅ ✅ ⚠️
System.Diagnostics.Debug 4.3.0 ✅ ✅ ✅ ⚠️
System.Diagnostics.DiagnosticSource 9.0.10 ✅ ✅ ✅ ⚠️
System.Diagnostics.Tools 4.3.0 ✅ ✅ ✅ ⚠️
System.Diagnostics.Tracing 4.3.0 ✅ ✅ ✅ ⚠️
System.Formats.Asn1 9.0.10 ✅ ✅ ✅ ⚠️
System.Globalization 4.3.0 ✅ ✅ ✅ ⚠️
System.Globalization.Calendars 4.3.0 ✅ ✅ ✅ ⚠️
System.IO 4.3.0 ✅ ✅ ✅ ⚠️
System.IO.Compression 4.3.0 ✅ ✅ ✅ ⚠️
System.IO.Compression.ZipFile 4.3.0 ✅ ✅ ✅ ⚠️
System.IO.FileSystem 4.3.0 ✅ ✅ ✅ ⚠️
System.IO.FileSystem.Primitives 4.3.0 ✅ ✅ ✅ ⚠️
System.IO.Packaging 9.0.10 ✅ ✅ ✅ ⚠️
System.IO.Pipelines 9.0.10 ✅ ✅ ✅ ⚠️
System.IO.UnmanagedMemoryStream 4.3.0 ✅ ✅ ✅ ⚠️
System.Linq 4.3.0 ✅ ✅ ✅ ⚠️
System.Linq.Dynamic.Core 1.6.9 ✅ ✅ ⚠️ ❌
System.Linq.Expressions 4.3.0 ✅ ✅ ✅ ⚠️
System.Linq.Queryable 4.3.0 ✅ ✅ ✅ ⚠️
System.Memory 4.6.3 ✅ ✅ ✅ ⚠️
System.Net.Http 4.3.4 ✅ ✅ ✅ ⚠️
System.Net.Primitives 4.3.1 ✅ ✅ ✅ ⚠️
System.Net.Sockets 4.3.0 ✅ ✅ ✅ ⚠️
System.Numerics.Vectors 4.6.1 ✅ ✅ ✅ ⚠️
System.ObjectModel 4.3.0 ✅ ✅ ✅ ⚠️
System.Reflection 4.3.0 ✅ ✅ ✅ ⚠️
System.Reflection.Emit.ILGeneration 4.7.0 ✅ ✅ ✅ ⚠️
System.Reflection.Emit.Lightweight 4.7.0 ✅ ✅ ✅ ⚠️
System.Reflection.Extensions 4.3.0 ✅ ✅ ✅ ⚠️
System.Reflection.Primitives 4.3.0 ✅ ✅ ✅ ⚠️
System.Resources.ResourceManager 4.3.0 ✅ ✅ ✅ ⚠️
System.Runtime 4.3.1 ✅ ✅ ✅ ⚠️
System.Runtime.CompilerServices.Unsafe 6.1.2 ✅ ✅ ✅ ⚠️
System.Runtime.CompilerServices.Unsafe 7.0.0-preview.2.22152.2 ✅ ✅ ✅ ⚠️
System.Runtime.Extensions 4.3.1 ✅ ✅ ✅ ⚠️
System.Runtime.Handles 4.3.0 ✅ ✅ ✅ ⚠️
System.Runtime.InteropServices 4.3.0 ✅ ✅ ✅ ⚠️
System.Runtime.InteropServices.RuntimeInformation 4.3.0 ✅ ✅ ✅ ⚠️
System.Runtime.Numerics 4.3.0 ✅ ✅ ✅ ⚠️
System.Security.AccessControl 6.0.1 ✅ ✅ ✅ ⚠️
System.Security.Cryptography.Algorithms 4.3.1 ✅ ✅ ✅ ⚠️
System.Security.Cryptography.Encoding 4.3.0 ✅ ✅ ✅ ⚠️
System.Security.Cryptography.Pkcs 9.0.10 ✅ ✅ ✅ ⚠️
System.Security.Cryptography.Primitives 4.3.0 ✅ ✅ ✅ ⚠️
System.Security.Cryptography.X509Certificates 4.3.2 ✅ ✅ ✅ ⚠️
System.Security.Cryptography.Xml 9.0.10 ✅ ✅ ✅ ⚠️
System.Security.Permissions 9.0.10 ✅ ✅ ✅ ⚠️
System.Security.Principal.Windows 5.0.0 ✅ ✅ ✅ ⚠️
System.Text.Encoding 4.3.0 ✅ ✅ ✅ ⚠️
System.Text.Encoding.CodePages 9.0.10 ✅ ✅ ✅ ⚠️
System.Text.Encoding.Extensions 4.3.0 ✅ ✅ ✅ ⚠️
System.Text.Encodings.Web 9.0.10 ✅ ✅ ✅ ⚠️
System.Text.Json 9.0.10 ✅ ✅ ✅ ⚠️
System.Text.RegularExpressions 4.3.1 ✅ ✅ ✅ ⚠️
System.Threading 4.3.0 ✅ ✅ ✅ ⚠️
System.Threading.Tasks 4.3.0 ✅ ✅ ✅ ⚠️
System.Threading.Tasks.Extensions 4.6.3 ✅ ✅ ✅ ⚠️
System.Threading.Tasks.Parallel 4.3.0 ✅ ✅ ✅ ⚠️
System.Threading.Timer 4.3.0 ✅ ✅ ✅ ⚠️
System.ValueTuple 4.5.0 ✅ ✅ ✅ ⚠️
System.ValueTuple 4.6.1 ✅ ✅ ✅ ⚠️
System.Xml.Linq 3.5.21022.801 ✅ ✅ ✅ ⚠️
System.Xml.ReaderWriter 4.3.1 ✅ ✅ ✅ ⚠️
System.Xml.XDocument 4.3.0 ✅ ✅ ✅ ⚠️
WebActivatorEx 2.2.0 ✅ ✅ ✅ ⚠️
WebGrease 1.6.0 ✅ ✅ ✅ ⚠️
WkHtmlToPdf 1.0.2 ✅ ✅ ⚠️ ❌
X.PagedList 10.5.9 ✅ ✅ ✅ ⚠️
XLParser 1.7.5 ✅ ✅ ✅ ⚠️
ZString 2.6.0 ✅ ✅ ✅ ⚠️
bootstrap 3.4.1 ✅ ✅ ✅ ⚠️
bootstrap 5.3.8 ✅ ✅ ✅ ⚠️
elmah 1.2.2 ✅ ✅ ✅ ⚠️
elmah.corelibrary 1.2.2 ✅ ✅ ✅ ⚠️
html5-shiv 3.7.3 ✅ ✅ ✅ ⚠️
icheck-bootstrap 3.0.1 ✅ ✅ ✅ ⚠️
jQuery 3.7.1 ✅ ✅ ✅ ⚠️
jQuery-datetimepicker 2.4.5 ✅ ✅ ✅ ⚠️
jQuery.UI.Combined 1.14.1 ✅ ✅ ✅ ⚠️
jQuery.Validation 1.21.0 ✅ ✅ ✅ ⚠️
js-cookie 2.2.1 ✅ ✅ ✅ ⚠️
popper.js 1.16.1 ✅ ✅ ✅ ⚠️
starkbank-ecdsa 1.3.3 ✅ ✅ ✅ ⚠️
vue 2.6.11 ✅ ✅ ✅ ⚠️

(完)

相關

[研究]「ASP.NET 部分信任 (Partial Trust)」的 3rd Party 套件/元件支援狀況https://shaurong.blogspot.com/2025/11/aspnet-partial-trust-3rd-party.html

[研究]GCB,IIS,\system.web\trust\level 變更影響?
https://shaurong.blogspot.com/2025/11/gcbiissystemwebtrustlevel.html

[研究]「ASP.NET 部分信任 (Partial Trust)」的支援狀況
https://shaurong.blogspot.com/2025/11/aspnet-partial-trust.html



[研究]IIS 10套用GCB設定路徑圖解(3)ASP.NET設定建議

[研究]IIS 10套用GCB設定路徑圖解(3)ASP.NET設定建議

2025-12-02

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

類別項次 類別 項數 起訖項次編號 合計
1 基本設定 7 No.1 ~ 7 53
2 設定驗證與授權 5 No.8 ~ 12
3 ASP.NET設定建議 12 No.13 ~ 24
4 要求篩選與其他限制模組 11 No.25 ~ 35
5 IIS記錄 4 No.36 ~ 39
6 FTP要求 2 No.40 ~ 41
7 傳輸加密 12 No.42 ~ 53

IIS 10.0 政府組態基準列表

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
13 TWGCB-04-014-0013 ASP.NET設定建議 以retail模式部署Web應用程式 ▪這項原則設定決定是否以retail模式部署Web應用程式
▪以retail模式部署Web應用程式時,ASP.NET將停用追蹤輸出、停用偵錯功能,並停止將詳細系統錯誤訊息傳送給遠端使用者,以避免資訊洩漏
▪預設值為False
系統檔案 ▪開啟machine.config檔案,路徑如下:%systemroot%\Microsoft.NET\Framework64或Framework\framework版本\CONFIG\machine.config
▪設定machine.config:在<system.web>下加入設定值<deployment retail="true" />
True

[研究]如何判斷某 ASP.NET WebForm 網站使用的是哪一個 machine.config 呢?
https://shaurong.blogspot.com/2025/10/aspnet-webform-machineconfig.html

[研究]ASP.NET WebForm 網站的設定檔和繼承關係
https://shaurong.blogspot.com/2025/11/aspnet-webform_5.html

[研究]GCB,IIS,machine.config 設定 <deployment retail="true" /> 影響https://shaurong.blogspot.com/2025/11/gcbiismachineconfig.html

預設值False,GCB建議值 True,理論上正式機可以依循 GCB,開發機必須 False。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
14 TWGCB-04-014-0014 ASP.NET設定建議 偵錯功能 ▪這項原則設定決定是否啟用偵錯功能
▪開發人員通常在開發過程中啟用偵錯模式,網站上線後若未關閉偵錯模式,惡意人士將可利用此功能獲取應用程式相關資訊
▪雖然以retail模式部署Web應用程式時,即會停用偵錯功能,但基於縱深防禦概念,額外再個別停用偵錯功能,可降低因設定錯誤所造成之影響
▪設定為False,代表停用偵錯功能,設定為True,代表啟用偵錯功能
站台 IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\compilation\debug False




[研究]GCB,IIS,\system.web\compilation\debug 設定 False 影響

  • 開發環境不要設定為 True,影響開發除錯。
  • 生產環境可以設定為 True,但要改方案原始碼的 Web.Config,避免更新部署程式碼時,設定被覆蓋。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
15 TWGCB-04-014-0015 ASP.NET設定建議 自訂錯誤訊息顯示模式 ▪這項原則設定決定當網頁發生錯誤時,以何種模式顯示自訂錯誤訊息頁面
▪自訂錯誤訊息顯示模式有3種:
(1)開啟(On):啟用自訂錯誤頁面。如果未指定預設的錯誤網頁時,則使用者與本機端都將顯示ASP.NET錯誤訊息頁面
(2)關閉(Off):停用自訂錯誤頁面,使用者與本機端都將顯示ASP.NET錯誤訊息頁面
(3)僅限遠端(RemoteOnly):只對遠端使用者啟用自訂錯誤頁面,本機顯示ASP.NET錯誤訊息頁面
▪建議設定為開啟或僅限遠端,限制使用者僅能看到自訂錯誤頁面,以避免惡意人士利用此功能獲取應用程式相關資訊
▪預設值為僅限遠端(RemoteOnly)
站台 IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\customErrors\mode On或RemoteOnly



預設值 RemoteOnly,GCB 建議 On或RemoteOnly,算預設符合。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
16 TWGCB-04-014-0016 ASP.NET設定建議 HTTP詳細錯誤訊息顯示模式 ▪這項原則設定決定當網頁發生錯誤時,以何種模式顯示HTTP詳細錯誤訊息頁面
▪HTTP詳細錯誤資訊可能包含有關應用程式如何運行之細節資訊,確保在遠端使用者端不顯示HTTP詳細錯誤資訊,可減少惡意人士獲取有關應用程式運作資訊之風險
▪藉由錯誤回應設定可決定HTTP詳細錯誤訊息頁面顯示方式:
(1)本機要求的詳細錯誤及遠端要求的自訂錯誤網頁(DetailedLocalOnly):本機端顯示詳細錯誤訊息,非本機端顯示自訂錯誤頁面
(2)自訂錯誤網頁(Custom):不管本機端或是遠端使用者,皆顯示自訂錯誤頁面
(3)詳細錯誤(Detailed):本機端與遠端使用者皆顯示詳細錯誤訊息
▪預設值為DetailedLocalOnly
站台 IIS管理員\伺服器\站台\網站\IIS\錯誤網頁\動作\開啟功能\動作\編輯功能設定\編輯錯誤網頁的設定\錯誤回應 本機要求的詳細錯誤及遠端要求的自訂錯誤網頁或自訂錯誤網頁




預設值 和 GCB 建議都是「本機要求的詳細錯誤及遠端要求的自訂錯誤網頁或自訂錯誤網頁 (DetailedLocalOnly)」。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
17 TWGCB-04-014-0017 ASP.NET設定建議 ASP.NET堆疊追蹤 ▪這項原則設定決定是否關閉網頁堆疊追蹤模式
▪ASP.NET可透過設定<trace>元素來控制如何被蒐集、儲存及顯示追蹤結果。啟用追蹤後,每個網頁都會要求加入追蹤訊息,這些訊息會附加到頁面輸出或儲存在應用程式追蹤紀錄,建議停用追蹤,以減少惡意人士取得詳細追蹤資訊之風險
▪雖然以retail模式部署Web應用程式時,即會停用追蹤輸出,但基於縱深防禦概念,額外再設定停用追蹤功能,可降低因設定錯誤所造成之影響
▪伺服器
▪站台
▪網頁
▪伺服器級別設定:machine.config與web.config
▪站台級別與每個ASP.NET網站級別個別設定:IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\trace\enabled
▪自設定檔與ASP.NET網頁中,移除所有Trace="true"或trace enabled="true"內容
▪False




ChatGPT

情境 trace / Stack Tracing 預設值 GCB 建議設定
ASP.NET (預設) 通常 off / disabled。許多文件指出若不特別設定 <trace enabled="true"> 或 @ Page Trace="true",則 tracing 是關閉的。 (Tenable®) False (也就是關閉 tracing) (Scribd)
開發 / 測試 環境 常開啟 <trace enabled="true"> 或在頁面上 Trace="true",以方便除錯與追蹤流程 — (視情況)
生產環境 (依 GCB) 關閉 (remove trace / trace enabled = false) 符合 GCB 建議

「設定位置」、「設定路徑」、「GCB設定值」欄位寫的有些混亂南棟,預設值和GCB 建議值似乎相同。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
18 TWGCB-04-014-0018 ASP.NET設定建議 工作階段狀態Cookie模式 ▪這項原則設定決定是否使用Cookie儲存工作階段狀態(Session state)
▪工作階段狀態Cookie模式選項如下:
(1)使用Cookie:不論瀏覽器或裝置是否支援Cookie,Cookie都會保存使用者資料
(2)使用URI:不論瀏覽器或裝置是否支援Cookie,呼叫的功能都會使用查詢字串儲存識別項
(3)使用裝置設定檔:ASP.NET根據HttpBrowserCapabilities設定決定是否使用Cookie。如果HttpBrowserCapabilities設定表示瀏覽器或裝置支援Cookie,就會使用Cookie,否則便會在查詢字串中使用識別項
(4)自動偵測:ASP.NET決定要求瀏覽器或裝置是否支援Cookie。如果要求的瀏覽器或裝置支援Cookie,AutoDetect便會使用Cookie保存使用者資料,否則便會在查詢字串中使用識別項。如果瀏覽器或裝置支援Cookie,但目前已停用Cookie,要求的功能還是會使用Cookie
▪使用Cookie管理使用者連線狀態,可藉由防止ASP.NET將Session資訊透過URL傳送,避免Session ID在代理伺服器記錄檔或瀏覽歷程紀錄中被找到,以降低Session遭竊取之風險
▪預設值為使用Cookie
站台 IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\sessionState\cookieless UseCookies




預設值和GCB 建議值都是 UseCookie。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
19 TWGCB-04-014-0019 ASP.NET設定建議 httpOnlyCookies ▪這項原則設定決定Cookie是否只能經由HTTP(S)協定來存取,其餘之JavaScript、Silverlight或Flash等前端程式皆無法存取
▪設定網站中的Cookie屬性為HttpOnly,讓Cookie只供瀏覽器與網站伺服器間之網頁溝通,可避免Cookie被JavaScript等相關前端程式存取,以降低攻擊者利用網站既有的XSS漏洞並透過JavaScript取得Cookie資料之機會
站台 IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\httpCookies\httpOnlyCookies True




預設值 False,GCB建議 True,實際檢視某網站 Source Code 的 Web.Config 為 True。

<configuration>
  <system.web>
    <httpCookies httpOnlyCookies="true" sameSite="Strict" requireSSL="true" />
  </system.web>
</configuration>

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
20 TWGCB-04-014-0020 ASP.NET設定建議 電腦金鑰驗證方法(ASP.NET 3.5) ▪這項原則設定決定ASP.NET 3.5環境之電腦金鑰使用何種驗證方式
▪使用電腦金鑰,可設定加密及解密金鑰,用以協助保護表單驗證之Cookie資料與網頁層級的檢視狀態資料。電腦金鑰也可用來驗證跨處理序工作階段狀態識別
▪系統採用ASP.NET 3.5版本時,支援下列驗證方法:
(1)AES(金鑰長度可為128, 192或256位元)
(2)MD5
(3)SHA1
(4)TripleDES(金鑰長度為192位元)
▪ASP.NET 3.5環境預設電腦金鑰驗證方法為SHA1
▪在變更.NET Framework版本設定中,分別有v2.0.x與v4.0.x兩種選項,「v2.0.x」表示.NET Framework版本包含3.0與3.5,則適用此項原則設定
▪確認版本方式:IIS管理員\伺服器\動作\變更.NET Framework版本,開啟確認版本
站台 IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\machineKey\validation SHA1或AES






[研究]ASP.NET WebForm 用 IIS GUI 判斷使用的 .NET Framework 版本? 32 bits 或 64位元?

註:【確認版本方式:IIS管理員\伺服器\動作\變更.NET Framework版本,開啟確認版本】
除非 Windows Server 同時安裝 .NET 3.5 和 .NET 4.5(或以上),才會出現【變更.NET Framework版本】按鈕,Windows Server 2019 ~ 2025 預設安裝 .NET 4.7或以上,預設沒安裝 .NET 3.5,故不會有該按鈕。

預設值、GCB建議值、實際檢視某網站值 都是 SHA1。
但 ASP.NET 3.5網站應該看本條 No.20,ASP.NET 4.5網站應該看下一項 No.21。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
21 TWGCB-04-014-0021 ASP.NET設定建議 電腦金鑰(ASP.NET 4.5) ▪這項原則設定決定ASP.NET 4.5環境之電腦金鑰使用何種驗證方式
▪使用電腦金鑰,可設定加密及解密金鑰,用以協助保護表單驗證之Cookie資料與網頁層級的檢視狀態資料。電腦金鑰也可用來驗證跨處理序工作階段狀態識別
▪系統採用ASP.NET 4.5版本時,支援下列驗證方法:
(1)AES(金鑰長度可為128, 192或256位元)
(2)MD5
(3)SHA1
(4)TripleDES(金鑰長度為192位元)
(5)HMACSHA256
(6)HMACSHA384
(7)HMACSHA512
▪ASP.NET 4.5環境預設電腦金鑰驗證方法為SHA256
▪在變更.NET Framework版本設定中,分別有v2.0.x與v4.0.x兩種選項,「v4.0.x」表示.NET Framework版本包含4.5,則適用此項原則設定
▪確認版本方式:IIS管理員\伺服器\動作\變更.NET Framework版本,開啟確認版本
站台 IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\machineKey\validation HMACSHA256、HMACSHA384或HMACSHA512

(下圖)









某真實網站此值為 SHA1,但 GCB 建議 HMACSHA256、HMACSHA384或HMACSHA512。

ChatGPT

  1. 如果網站是舊專案(例如 .NET Framework 2.0、3.5),這些版本的 ASP.NET 可能不支援 HMACSHA256/384/512,會導致驗證失敗、ViewState 不能正確解碼,使用者可能看到錯誤頁面。
  2. 如果是 .NET Framework 4.5+ 的 WebForm 專案,改成 HMACSHA256/384/512 基本上不會異常,但 現有使用 SHA1 簽署的資料(Cookie、ViewState)可能無法驗證,也就是說舊 Session 或 Cookie 可能失效。
  3. 多伺服器環境:如果是多台 IIS Server,machineKey 的 validationKey 必須統一,否則不同伺服器產生的 ViewState 或 Forms Authentication Ticket 將無法互相驗證。
  4. 正式機更新程式碼後,此設定值會被 Web.Config 設定值覆蓋,建議從 Source Code 改起。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
22 TWGCB-04-014-0022 ASP.NET設定建議 .NET信任層級 ▪這項原則設定決定是否指定套用到應用程式之程式碼存取安全性(Code Access Security, CAS)層級
▪可選擇之信任層級如下:
(1)Full(internal):指定未限制的權限。授予ASP.NET應用程式權限,以存取受制於作業系統安全性之任何資源。支援所有特殊權限操作。
(2)High(web_hightrust.config):指定高程式碼存取安全性層級,ASP.NET應用程式預設無法執行下列任何一個動作:
  • 呼叫Unmanaged程式碼
  • 呼叫處理的元件
  • 寫入事件日誌
  • 存取「訊息佇列」服務佇列
  • 存取ODBC、OleDb或Oracle資料來源
(3)Medium(web_mediumtrust.config):指定中程式碼存取安全性層級,表示除了高信任層級限制外,ASP.NET應用程式預設無法執行下列任何一個動作:
  • 在應用程式目錄外存取檔案
  • 存取登錄
  • 進行網路或網頁服務呼叫
(4)Low(web_lowtrust.config):指定低程式碼存取安全性層級,表示除了中信任層級限制外,ASP.NET應用程式預設無法執行下列任何一個動作:
  • 寫入檔案系統
  • 呼叫Assert方法
(5)Minimal(web_minimaltrust.config):指定最小的程式碼存取安全性層級,表示ASP.NET應用程式只具有執行權限
▪預設信任層級為Full(internal)
站台 IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\trust\level Medium (web_mediumtrust.config)、Low (web_lowtrust.config)或Minimal (web_minimaltrust.config)



,ASP.NET設定建議,.NET信任層級,

.NET信任層級 = Code Access Security, CAS = partial trust

[研究]「ASP.NET 部分信任 (Partial Trust)」的 3rd Party 套件/元件支援狀況
此值設定 Medium 會導致 Aspose.Cells, ClosedXML, ClosedXML.Parser, FreeSpire.PDF, NReco.PdfGenerator, WkHtmlToPdf, System.Reflection.Emit 相關套件(FastMember, LinqKit) 、、無法使用。

Can't execute under partial trust - SecurityException: System.Security.Permissions.EnvironmentPermission #1669

Web伺服器上的權限信任
所有Aspose .NET元件都需要設定完全信任權限

CAS被微軟棄用,建議設定Full,否則很多程式庫不能用。

Code Access Security
Because Code Access Security is deprecated, most modern code within the .NET ecosystem is not designed to operate within a partial trust environment. Applications that rely on CAS should not expect modern libraries to behave correctly within these environments, unless the library developer has taken explicit steps to ensure compatibility within the CAS sandbox.
由於程式碼存取安全性 (CAS) 已被棄用,.NET 生態系統中的大多數現代程式碼並非設計用於在部分信任環境中運作。依賴 CAS 的應用程式不應期望現代函式庫在這些環境中正常運行,除非函式庫開發者已採取明確措施確保其與 CAS 沙箱的兼容性。

[研究]GCB,IIS,\system.web\trust\level 變更影響?

[研究]「ASP.NET 部分信任 (Partial Trust)」的支援狀況

微軟對 .NET 4.0 開始宣導使用 Full Trust 。

預設值 Full,GCB 建議值 Medium (web_mediumtrust.config)、Low (web_lowtrust.config)或Minimal (web_minimaltrust.config)。但微軟對 .NET 4.0 開始宣導使用 Full Trust,建議排除。

********************************************************************************
項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
23 TWGCB-04-014-0023 ASP.NET設定建議 X-Powered-By標頭 ▪這項原則設定決定是否移除X-Powered-By標頭
▪X-Powered-By標頭為HTTP回應標頭,提供網頁伺服器在回應標頭中,呈現當前網頁應用程式所使用之技術
▪移除X-Powered-By標頭可避免攻擊者藉此取得網頁伺服器技術資訊(如使用ASP或PHP),並利用特定版本已知漏洞對伺服器進行攻擊,以提升網頁伺服器安全性
伺服器 IIS管理員\伺服器\IIS\HTTP回應標頭\動作\開啟功能\X-Powered-By\動作\移除 移除




HTTP Response Headers
https://go.microsoft.com/fwlink/?LinkId=210509
https://learn.microsoft.com/zh-tw/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831707(v=ws.11)

有些第三方前端或 API 可能用 X-Powered-By 做檢測(很少見)。

套件類型 檢測方式 移除後結果 錯誤類型
Wappalyzer、BuiltWith 讀取 HTTP 標頭 X-Powered-By 或其他指紋 無法透過標頭判斷 ASP.NET;可能用其他方式猜測 不會報錯,只是無法辨識
企業內部監控或兼容性檢查 AJAX / HTTP Request 判斷標頭值 判斷不到標頭值;某些程式可能跳過特定功能 如果程式寫死依賴標頭,可能出現「Null Reference」或「未找到值」等程式例外,但非常罕見
安全掃描工具 HTTP 回應分析 判斷不到技術棧,掃描報告會顯示「未知技術」或「標頭缺失」 一般不會報錯,只是掃描結果不完整

預設值存在「X-Powered-By」HTTP回應標頭,GCB建議把它移除。基本上出問題機率低,可以移除。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
24 TWGCB-04-014-0024 ASP.NET設定建議 伺服器標頭 ▪這項原則設定決定是否移除伺服器標頭
▪伺服器標頭為HTTP回應標頭,呈現當前網頁應用程式所使用之技術
▪移除伺服器標頭是IIS 10的一項新功能,雖然透過回應標頭進行站台識別並非唯一方法,但移除後仍能增加難度,並阻止部分潛在攻擊者,從而有助於降低風險
站台 IIS管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.webServer\security\requestFiltering\removeServerHeader True


預設值 False,GCB建議True。

設定 True 後,HTTP回應標頭不會出現

Server: Microsoft-IIS/10.0   

可能注意的地方

  1. 第三方 API 或前端檢測工具
    • 如果有某些安全掃描、Web 應用防火牆或自動化工具 檢測 Server header,設 True 可能會:
      • 顯示「無法檢測 IIS 版本」或「Server header missing」的訊息。
      • 這通常只是資訊缺失,非錯誤,對功能沒有影響。
  2. 開發環境
    • 開發時可能會少了 Server 資訊(有些 debug 或自動化檢測工具會用它判斷環境),僅影響訊息顯示,不會影響程式。
  3. 瀏覽器端
    • 完全不會影響瀏覽器端 HTML、JS、CSS 等正常呈現。

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

(完)

相關

[研究]IIS 10套用GCB設定路徑圖解(1)基本設定

[研究]IIS 10套用GCB設定路徑圖解(2)設定驗證與授權

[研究]IIS 10套用GCB設定路徑圖解(3)ASP.NET設定建議

[研究]IIS 10套用GCB設定路徑圖解(4)要求篩選與其他限制模組

[研究]IIS 10套用GCB設定路徑圖解(5)IIS記錄

[研究]IIS 10套用GCB設定路徑圖解(6)FTP要求

[研究]IIS 10套用GCB設定路徑圖解(7)傳輸加密


[研究]GCB,IIS,\system.web\trust\level 變更影響?

[研究]GCB,IIS,\system.web\trust\level 變更影響?

2025-11-12

政府組態基準(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

IIS 管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\trust\level 


預設 Full,GCB建議 Medium、Low 或 Minimal,不相符。 

改成 Medium、Low 或 Minimal 會導致甚麼功能異常 ? 

此值儲存於 Web.Config 嗎 ? Web.Config 有相對應值 ? 

系統更新程式碼 (含 Web.Config) 後,此值會從新自 Web.Config 讀取?

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

ChatGPT

🧩 一、設定位置與作用

在 IIS 管理員 → 設定編輯器 → system.web → trust → level

對應到 Web.config 中的設定如下:


<configuration>
  <system.web>
    <trust level="Full" originUrl="" />
  </system.web>
</configuration>

此設定主要是 ASP.NET 部分信任 (Partial Trust) 模型的一部分,用來限制應用程式能執行的 .NET Framework 權限。

⚙️ 二、各層級說明

層級 權限範圍 備註
Full (預設) 完整信任,應用程式可執行所有 .NET Framework API 與檔案/登錄/網路操作 最相容但最不安全
High 接近完整信任,但限制部分敏感 API 少見
Medium 禁止部分 I/O、反射、網路等高風險操作 常造成應用程式相容性問題
Low / Minimal 幾乎無法存取檔案、登錄、網路、環境變數等 嚴格安全,但幾乎無法運行一般 ASP.NET 應用程式

⚠️ 三、改為 High、Medium、Low、Minimal 可能造成的功能異常

🟦 1️⃣ trust level="High" 可能異常

此層級比 Full 稍弱,禁止部分反射與跨組件存取。

類別 可能異常現象 錯誤訊息/行為
反射與動態載入 某些使用 Reflection.Emit 或 Assembly.LoadFrom() 的模組無法載入 System.Security.SecurityException: Request for the permission of type 'SecurityPermission' failed.
第三方套件 一些需要存取私有成員或內部屬性的 NuGet 套件出錯 例:PDF 產生、ORM、報表元件
跨組件呼叫 嘗試調用未標註 [AllowPartiallyTrustedCallers] 的組件時失敗 That assembly does not allow partially trusted callers.
Windows API 或 COM Interop 無法調用 COM 物件或 Win32 API PlatformNotSupportedException

🟩 2️⃣ trust level="Medium" 可能異常

此層級限制檔案、登錄、網路、環境變數、反射等權限,為最常見的「報錯層級」。

類別 可能異常現象 錯誤訊息/行為
檔案 I/O 無法讀取或寫入 App_Data 外部檔案 System.Security.SecurityException: Request for the permission of type 'FileIOPermission' failed.
反射/動態程式碼 不能建立動態組件或存取私有成員 MethodAccessException、SecurityException
Session / ViewState 使用 SessionStateMode=SQLServer 或 StateServer 可能失敗 例:SecurityException during serialization
資料庫連線 驅動程式需要存取環境變數(例如連線字串),導致拒絕存取 SqlClient 無法開啟連線
第三方函式庫 任何需檔案存取、暫存檔或動態編譯的套件將出錯 例:DotNetZip、Spire、NPOI
郵件發送 System.Net.Mail.SmtpClient 拒絕使用網路 SecurityException: The request for permission of type 'WebPermission' failed.

🔸整體評估: 幾乎所有實際運作中的 ASP.NET 網站都會在此層級出錯,除非是純靜態或展示型頁面。

🟨 3️⃣ trust level="Low" 可能異常

進一步限制網路、登錄、檔案、反射、環境變數與 Thread 操作。

類別 可能異常現象 錯誤訊息/行為
任何 I/O 操作 檔案、登錄、網路全部被禁止 SecurityException
第三方程式庫 幾乎所有使用 System.IO、System.Net 的函式庫失效 無法載入或直接例外中止
伺服端控制項 某些 ASP.NET 控制項需寫入暫存檔 (如 GridView 匯出 Excel) 將失敗 匯出功能失效
應用程式啟動 若 Global.asax 內部使用反射或呼叫外部組件,應用程式啟動即報錯 Application_Start 失敗
序列化 / 加密 無法使用 MachineKey 或加密 API System.Security.SecurityException

🔸整體評估: 僅適用於靜態 HTML 或非常有限的動態頁面,實務上幾乎無法部署 ASP.NET 專案。

🟥 4️⃣ trust level="Minimal" 可能異常

最嚴格層級,只允許非常有限的基本運算與輸出,近乎沙盒。

類別 可能異常現象 錯誤訊息/行為
ASP.NET 執行階段 幾乎所有系統類別被拒絕使用 SecurityException 於啟動階段即發生
頁面呈現 HttpContext, Request, Response 操作受限 Request for the permission ... failed
控制項渲染 WebForm 控制項可能無法 Render 頁面空白或出現例外
Session / Cookie 無法建立 Cookie 或 Session 登入、驗證全部失效
應用程式載入 Global.asax、Web.config 中有自訂模組會導致整站無法啟動 SecurityException 於啟動時拋出

🔸整體評估: 幾乎不可能運行任何 ASP.NET 程式,只能用於安全測試或理論環境。

📘 總結

層級 實務可用性 安全性 相容性
Full ✅ 高 ⚠️ 低 ✅ 最高
High ⚠️ 中 ✅ 中 ⚠️ 中
Medium ❌ 低 ✅ 高 ❌ 極低
Low / Minimal ❌ 極低 ✅ 最高 ❌ 無法運行

實務上,Medium 或以下信任層級幾乎不再使用,因為 ASP.NET Core 與新版 Framework 都不再支援 Partial Trust 模式。

🔄 四、系統更新或程式碼更新後的行為

若你的部署包含 Web.config,那麼部署後 IIS 啟動網站時會重新讀取其中的 <trust> 設定。

若沒有出現在 Web.config,則 IIS 使用機器層級 (machine.config) 預設值,通常是 Full。

🧠 五、實務建議

建議方向 原因
維持 Full 目前 .NET Framework 4.x 及 IIS 10 幾乎皆假設 Full Trust 環境
若要通過 GCB 檢查 可文件化說明「應用程式需 Full Trust 才能運行」,並在稽核時註記「例外項」
若是純靜態網站 (HTML, JS) 可設定為 Low 或 Minimal 無問題

📚 參考來源

ASP.NET Trust Levels and Policy Files
https://learn.microsoft.com/en-us/previous-versions/aspnet/wyts434y(v=vs.100)

Regarding .NET Trust level set
https://learn.microsoft.com/en-us/answers/questions/5572235/regarding-net-trust-level-set

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

(完)

相關

[研究]「ASP.NET 部分信任 (Partial Trust)」的 3rd Party 套件/元件支援狀況https://shaurong.blogspot.com/2025/11/aspnet-partial-trust-3rd-party.html

[研究]GCB,IIS,\system.web\trust\level 變更影響?
https://shaurong.blogspot.com/2025/11/gcbiissystemwebtrustlevel.html

[研究]「ASP.NET 部分信任 (Partial Trust)」的支援狀況
https://shaurong.blogspot.com/2025/11/aspnet-partial-trust.html