什麼是私人網路存取權?
私人網路存取權 (PNA,舊稱 CORS-RFC1918 和短暫區域網路存取權) 是一項安全性功能,可限制網站傳送要求給私人網路上的伺服器。這有助於保護使用者和內部網路免於遭受跨網站要求偽造 (CSRF) 等潛在攻擊。Chrome 已逐步實作 PNA,並會在日後的版本中擴大保護範圍。
主要 PNA 保護措施 (及其目前狀態)
- 安全內容:只有安全內容才能發出私人網路子資源要求 (自 Chrome 94 起實施)。詳情請參閱私人網路存取權更新文章。
- 預檢要求:Chrome 會在私人網路子資源要求之前傳送預檢要求,檢查伺服器權限 (開發人員工具會顯示於 Chrome 104 版本以後失敗,在 Chrome 130 中強制執行的警告)。相關說明請參閱私人網路存取權:預檢簡介。自 Chrome 123 起,如果預檢是因為 PNA 而建立並傳送,Chrome 會略過部分 CORS 標頭,例如
Accept
。 - 同源豁免條款:自 Chrome 115 起,來自可信來源的同源要求不受 PNA 限制。
延伸防護:網路工作人員
PNA 防護功能將擴及網路工作者 (專用工作者、共用工作者和服務工作者)。包括:
- 擷取 worker 指令碼:需要安全的內容和偏好檢查,才能使用較不公開的 IP 位址。自 Chrome 110 版起,將在 Chrome 130 版中強制執行的警告。
- 工作站指令碼啟動的擷取作業:所有從工作站指令碼中擷取的擷取作業都會遵循相同的 PNA 規則。
從 Chrome 124 開始,您可以按照下列步驟測試強制執行機制:
- 停用
chrome://flags/#private-network-access-ignore-worker-errors
- 啟用
chrome://flags/#private-network-access-respect-preflight-results
進階防護:導覽擷取
由於 PNA 可能用於 CSRF 攻擊,因此也適用於瀏覽擷取作業 (iframe、彈出式視窗)。Chrome 123 開始針對失敗情形顯示警告,並計劃針對 Chrome 130 強制執行。
自 Chrome 124 版起,您可以透過下列方式測試違規處置功能:
- 停用
chrome://flags/#private-network-access-ignore-navigation-errors
- 啟用
chrome://flags/#private-network-access-respect-preflight-results
當 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 Żerdzicki 提供,取自 Unsplash