私人網路存取權:為網路工作站和導覽擷取作業提供額外防護

Jonathan Hao
Jonathan Hao

什麼是私人網路存取權?

私人網路存取權 (PNA,先前稱為 CORS-RFC1918,簡稱「區域網路存取權」) 是一項安全性功能,可限制網站向私人網路上的伺服器傳送要求。這有助於保護使用者和內部網路,避免使用者和內部網路遭受潛在的攻擊,例如跨網站要求偽造 (CSRF) 攻擊。Chrome 已逐步採用 PNA,未來版本也將擴大防護功能。

主要 PNA 保護措施 (具有目前狀態)

  • 安全內容:只有安全的結構定義才能提出私人網路子資源要求 (自 Chrome 94 版強制執行)。詳情請參閱私人網路存取權更新文章
  • 預檢要求:Chrome 會在私人網路子資源要求之前傳送預檢要求,用於檢查伺服器權限。在開發人員工具中,自 Chrome 104 以來的失敗通知會在 Chrome 130 中強制執行。如需相關說明,請參閱「私人網路存取權:預檢簡介」一文。自 Chrome 123 版起,如果預檢因 PNA 而建立並傳送,Chrome 會省略某些 CORS 標頭,例如 Accept
  • 同源豁免:自 Chrome 115 版起,可能信任來源的相同來源要求不受 PNA 限制的約束。

延伸防護:網路工作處理序

PNA 防護設定將擴及網路工作站 (專屬工作站、共用工作站和服務工作站)。包括:

  • 擷取工作站指令碼:要求公開 IP 位址的安全結構定義和預檢。Chrome 130 以上版本將強制執行警告。
  • 由工作站指令碼啟動的擷取作業:從工作站指令碼啟動的所有擷取作業都會遵循相同的 PNA 規則。

從 Chrome 124 開始,您可以按照下列步驟測試違規處置:

  • 停用 chrome://flags/#private-network-access-ignore-worker-errors
  • 啟用 chrome://flags/#private-network-access-respect-preflight-results

延伸防護:Navigation 擷取

PNA 也適用於瀏覽擷取 (iframe、彈出式視窗),因為其可能用於 CSRF 攻擊。Chrome 123 開始顯示失敗警告,並預計在 Chrome 130 中強制執行。

從 Chrome 124 開始,您可以透過下列方式測試強制執行狀態:

  • 停用 chrome://flags/#private-network-access-ignore-navigation-errors
  • 啟用 chrome://flags/#private-network-access-respect-preflight-results

當 PNA 封鎖導航要求時,使用者會看到特定錯誤,並提供手動重新載入和允許要求的選項。

當 PNA 封鎖導航要求時,使用者會看到特定錯誤,並提供手動重新載入和允許要求的選項。
PNA 封鎖導航要求後,使用者會看到特定錯誤,並提供手動重新載入及允許要求的選項。

如果網站受到影響,該怎麼辦?

私人網路存取權:引述預檢」一文包含相關指引。請務必注意導覽要求:

  • Access-Control-Allow-Origin 不得為萬用字元 ("*")。
  • Access-Control-Allow-Credentials 必須設為 "true"

後續步驟

  • WebSockets:從 Chrome 126 以上版本開始,PNA 將涵蓋 WebSocket 握手 (警告)。
  • 全面強制執行:在 Chrome 130 版中,系統會負責強制執行所有 PNA 限制 (封鎖不符規定的請求)。使用者可透過網站設定覆寫信任的網站的 PNA。

針對私人網路用途提供意見回饋

如果你使用私人網路代管網站,且需要來自公用網路的要求,Chrome 團隊希望你提供意見回饋!前往 Chromium Issue Tracker 回報問題 (元件:Blink>SecurityFeature>CORS>PrivateNetworkAccess)。

相片來源:Jakub zoerdzickiUnsplash 網站上