為了強化對跨來源資源共用 (CORS) 相關攻擊的保護,系統預設會根據 Horizon 設定中的允許來源清單,驗證 HTTP 要求中 (若存在) 所包含的來源 HTTP 標頭。此清單包括:
- 根據網路組態、Horizon 設定與高可用性設定動態計算出的來源。所有這些來源皆會自動允許。
- 可由管理員明確設定的來源。
自動允許清單
儲存 Horizon 設定時,系統會自動將以下項目新增至允許清單。自動允許清單中的項目無法由管理員刪除。
- 個別網路介面 IP 位址
- 系統組態中所指定的 UAG 名稱
- 高可用性虛擬 IP
- Tunnel 外部 URL 與 Tunnel URL (當未指定連接埠或指定為 443 時)
- Blast 外部 URL 與 Blast URL (當指定連接埠為 443 時)
符合以下來源標頭格式的任何傳入要求皆會被允許:
- https://<主機名稱或 IP>
- https://<主機名稱或 IP>:443
- <主機名稱或 IP>
- <主機名稱或 IP>:443
明確設定的清單
如果傳入 Unified Access Gateway 的 HTTP 要求中,其來源標頭中的值不同於動態計算出的值,則管理員必須使用以下其中一種方法,將這些值明確地新增至允許清單中:
- 使用 [管理員 UI] > [Edge 服務設定] > [Horizon 設定] 中的自動允許清單設定。
- 使用 PowerShell 指令碼部署時透過
.ini檔案設定。部署指令碼中包含一個範例 INI 檔案,可用來協助設定此清單。
範例組態
[Horizon]
....
originCheckEnabled=true
originHeaderDetailsList=1,2,3
[OriginHeaderDetails1]
origin=userorigin.com
rewriteEnabled=true
[OriginHeaderDetails2]
origin=tunnelurl.com
rewriteEnabled=false
[OriginHeaderDetails3]
origin=https://uag-origin.test.com:443
rewriteEnabled=true
依預設,對於自動允許清單中的所有項目,無論是在管理員 UI 中的重新寫入來源切換,或是在 .ini 檔案中的 rewriteEnabled 欄位,皆為停用狀態。若為指定的來源啟用此功能,且 HTTP 要求中的 [來源] 標頭包含此值,則當 Unified Access Gateway 將該要求傳送至 Horizon Connection Server 時,會將此 [來源] 標頭的值重新寫入為連線伺服器 URL 中所指定的值。
如果 HTTP 要求中的來源標頭值不在允許清單中,系統將回應 HTTP 404。
從舊版升級至 25.03
如果升級後傳送至 Unified Access Gateway 的 HTTP 要求中,其來源值不在自動允許清單中,則管理員必須手動新增該值。請參閱明確設定的清單。
其他附註
- 如果 Blast 外部 URL 與 Tunnel 外部 URL 使用相同的主機名稱或 IP 並指定連接埠為 443 (例如
https://horizon.xyz.com:443),則會自動允許該完全相符的 URL。但是,如果 HTTP 要求中的來源標頭為類似https://horizon.xyz.com(未包含連接埠),且需要被接受,則管理員必須手動將其新增至自動允許清單。當指定連接埠為 443 時,若其他 Blast 外部 URL 與其他 Tunnel 外部 URL 欄位中有任何項目相同,亦會採取相同的處理行為。 - 如果在管理員 UI 中關閉了需要檢查來源切換,或在
.ini檔案中將 originCheckEnabled 設為 false,且自動允許清單中有任一項目的重新寫入來源切換為開啟狀態,則管理員必須手動在管理員 UI 中將該項目的重新寫入來源切換,或在.ini檔案中將該項目的rewriteEnabled欄位設為 false。 - 若要接受來自 Chrome 原生用戶端的要求,請務必將
chrome-extension://ppkfnjlimknmjoaemnpidmdlfchhehel明確新增至允許的來源設定中。
此頁面對您有幫助嗎?