事前準備工作:
- 如果您不確定「site」和「origin」之間的差異,請參閱「瞭解「相同網站」和「相同來源」」一文。
- 由於規格中原本有錯字,
Referer
標頭缺少 R。JavaScript 和 DOM 中的Referrer-Policy
標頭和referrer
拼字正確無誤。
摘要
- 瀏覽器不斷演進以強化隱私權的預設參照網址政策,為網站未設定政策時提供完善的備用廣告。
- Chrome 預計在 85 版中逐步啟用
strict-origin-when-cross-origin
做為預設政策;這可能會影響依賴其他來源參照網址值的用途。 - 這是新的預設設定,但網站仍可自行選擇政策。
- 如要在 Chrome 中試用變更,請在
chrome://flags/#reduced-referrer-granularity
啟用標記。您也可以觀看這個示範影片,瞭解實際變化情形。 - 除了參照政策以外,瀏覽器處理參照網址的方式可能有所改變,因此請特別留意。
異動內容與原因
HTTP 要求可能包含選用的 Referer
標頭,用於表示提出要求的來源或網頁網址。Referer-Policy
標頭會定義要在 Referer
標頭中提供哪些資料,以及目的地 document.referrer
中的導覽和 iframe。
系統在您網站要求中的 Referer
標頭中傳送的資訊,取決於您設定的 Referrer-Policy
標頭。
如果不設定政策,系統會使用瀏覽器的預設值。網站通常會採用瀏覽器的預設值。
針對導覽和 iframe,Referer
標頭中顯示的資料也可以使用 document.referrer
透過 JavaScript 存取。
直到近期為止,no-referrer-when-downgrade
一直是各瀏覽器適用的預設政策。但現在許多瀏覽器處於改用更注重隱私權的預設設定。
Chrome 計劃從 85 版起將預設政策從 no-referrer-when-downgrade
變更為 strict-origin-when-cross-origin
。
這表示如果您的網站未設定政策,Chrome 預設會使用 strict-origin-when-cross-origin
。請注意,您還是可以設定您選擇的政策;這項變更只會影響未設定政策的網站。
這項變更代表什麼?
「strict-origin-when-cross-origin
」提供更多隱私。使用這項政策後,系統只會在跨來源要求的 Referer
標頭中傳送 origin。
這可以避免完整網址和查詢字串等網址的其他部分外洩。
例如:
跨來源要求,從 https://site-one.example/stuff/detail?tag=red 傳送至 https://site-two.example/...:
- 使用
no-referrer-when-downgrade
:參照網址:https://site-one.example/stuff/detail?tag=red。 - 使用
strict-origin-when-cross-origin
:參照網址:https://site-one.example/。
保持不變的有哪些?
- 和
no-referrer-when-downgrade
一樣,strict-origin-when-cross-origin
屬於安全:如果要求從 HTTPS 來源 (安全) 到 HTTP (不安全) 的要求,就不會出現參照網址 (Referer
標頭和document.referrer
)。如此一來,如果您的網站使用 HTTPS (如果不是,請將其設為優先順序),您網站的網址就不會在非 HTTPS 要求中外洩,因為網路上的所有人都可以看到這些要求,所以使用者可能會因此接觸到中間人攻擊。 - 在同一個來源中,
Referer
標頭值會是完整網址。
例如:相同來源的要求,從 https://site-one.example/stuff/detail?tag=red 傳送至 https://site-one.example/...:
- 使用
strict-origin-when-cross-origin
:參照網址:https://site-one.example/stuff/detail?tag=red
這會產生什麼影響?
根據與其他瀏覽器相關的討論,以及 Chrome 本身的實驗功能是在 Chrome 84 版中執行,預期使用者可見的中斷情形應該有限。
仰賴完整參照網址的伺服器端記錄或數據分析,可能會因為資訊的精細程度而受到影響。
您需要做些什麼?
Chrome 計劃在 85 版開始推出新的預設參照網址政策 (2020 年 7 月推出 Beta 版,2020 年 8 月是穩定版)。請參閱 Chrome 狀態項目中的狀態。
瞭解及偵測變更
如要瞭解新的預設變更實際運作方式,請參考這個示範。
您也可以透過這項示範來偵測執行中的 Chrome 執行個體將套用哪種政策。
測試變更內容,看看這麼做是否會影響網站
您現在可以從 Chrome 第 81 版開始試用變更:在 Chrome 中前往 chrome://flags/#reduced-referrer-granularity
並啟用標記。啟用此旗標後,所有沒有政策的網站都會使用新的 strict-origin-when-cross-origin
預設值。
您現在可以查看網站和後端的行為。
如要偵測影響程度,您還可以檢查網站的程式碼集是否使用參照網址 (透過伺服器上傳入要求的 Referer
標頭),或透過 JavaScript 中的 document.referrer
使用。
如果您使用來自其他來源的要求參照網址 (特別是路徑和/或查詢字串),「並且」這個來源使用瀏覽器的預設參照網址政策 (也就是未設定政策),網站上的特定功能可能會無法正常運作或運作方式。
如果這會影響你的網站,請考慮改用其他方法
如果您使用參照網址存取網站要求的完整路徑或查詢字串,可以採用以下幾種做法:
- 針對 CSRF 保護、記錄和其他用途,使用
Origin
和Sec-fetch-Site
等替代技術和標頭。請參閱參照網址和參照網址政策:最佳做法。 - 如有需要,您可以讓合作夥伴雙方瞭解特定政策,並向使用者清楚說明。
存取權控管 (當網站使用參照網址將資源的特定存取權授予其他來源時) 可能屬於這種情況,雖然隨著 Chrome 的異動,系統仍會在
Referer
標頭 (和document.referrer
中) 共用來源。
請注意,就大部分瀏覽器而言,在參照網址方面都朝著類似的方向移動 (請參閱「Referer and Referrer-Policy: Best Practices」(參照網址和參照網址-政策:最佳做法),以及瀏覽器預設值的發展。
在整個網站上導入明確的隱私權加強政策
網站「來源」的要求中應該傳送什麼 Referer
,也就是你應該為網站設定的政策?
即使 Chrome 改變了這一點,還是建議你立即設定明確的隱私權強化政策,例如 strict-origin-when-cross-origin
或更嚴格的政策。
不僅可以保護使用者,也能讓網站在不同瀏覽器上的預測行為更準確。最重要的是,這種方式可讓您自行控管,讓您的網站不必仰賴瀏覽器預設值。
如要進一步瞭解設定政策,請參閱「Referrer and Referrer-Policy: Best Practices」(參照網址和參照網址:最佳做法)。
關於 Chrome Enterprise
IT 管理員可以使用 Chrome 企業政策 ForceLegacyDefaultReferrerPolicy
,在企業環境中強制執行 no-referrer-when-downgrade
先前的預設參照網址政策。讓企業有更多時間測試及更新應用程式。
這項政策將在 Chrome 第 88 版中移除。
提供意見
想要分享意見或檢舉內容嗎?歡迎分享你對 Chrome 推送的意圖的意見,或是向 @maudnals 發送推文,提出自己的問題。
感謝所有評論者的貢獻和意見回饋,特別是 Kaustubha Govind、David Van Cleve、Mike West、Sam Dutton、Rowan Merewood、Jxck 和 Kayce Basques。