[研究]GCB,IIS,\system.web\machineKey\validation變更影響?
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/
IIS 管理員\伺服器\站台\網站\管理\設定編輯器\動作\開啟功能\區段\system.web\machineKey\validation
validation 預設值 SHA1,GCB建議值HMACSHA256、HMACSHA384 或 HMACSHA512,不符合。
若改成 HMACSHA256、HMACSHA384 或 HMACSHA512,會有甚麼影響 ?
此值儲存於 Web.Config 嗎 ?
Web.Config 有相對應值 ?
系統更新程式碼 (含 Web.Config) 後,此值會從新自 Web.Config 讀取?
ChatGPT
🔹 一、machineKey.validation 是什麼?
<machineKey> 是 ASP.NET 在加密、驗證使用者驗證票證(Forms Authentication Cookie)、ViewState、Session、AntiForgery Token 等時使用的金鑰組設定。
validation 屬性決定簽章演算法(即「雜湊演算法」)。
🔹 二、預設值與 GCB 建議值差異
| 項目 | 預設值 | GCB 建議值 | 說明 |
|---|---|---|---|
| validation | SHA1 | HMACSHA256、HMACSHA384、HMACSHA512 | SHA1 已被認為安全性不足;HMACSHA 系列為強化版本 |
- SHA1 雖仍可用,但已被視為弱雜湊演算法,可被碰撞攻擊(collision attack)破解。
- GCB 建議使用 HMACSHA256 以上演算法是為符合現行加密安全標準。
| 影響層面 | 說明 |
|---|---|
| ✅ 安全性 | 提升,防止 SHA1 的碰撞攻擊。 |
| ⚠️ 相容性 | 若系統中有多台 Web Server(或 Web Farm),且它們之間 machineKey 不一致,改變演算法後會造成 Cookie、ViewState、Session 無法互通。 |
| ⚠️ 現有登入狀態失效 | 變更後所有先前簽章(例如 ASP.NET Forms Authentication Cookie)都會無效,使用者需重新登入。 |
| ⚠️ 需重新部署 | 若應用程式中有自行實作簽章驗證、序列化機制(自訂加密驗證),也需確保使用新演算法相容。 |
<system.web>
<machineKey
validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"
validation="HMACSHA256"
decryption="AES" />
</system.web>
|
若在 IIS 管理員的「設定編輯器」中設定
system.web/machineKey/validation
修改後會自動反映至該網站的 Web.config(除非該設定是由 machine.config 或 applicationHost.config 繼承)。
🔹 五、系統更新後的行為
是的,當應用程式重新啟動或部署新版本(含更新 Web.config)時:
- ASP.NET 啟動時會重新讀取 Web.config。
- 若 machineKey 值不同(或 validation 變更),所有簽章/Session/Forms Cookie 都會被視為無效。
- 建議若為生產系統,應事先:
- 通知使用者登入會重置;
- 若多台 IIS 負載平衡(Web Farm),確保各台使用相同 machineKey。
(完)
沒有留言:
張貼留言