事前準備工作:
- 若您不確定「site」和「origin」之間的差異,請參閱瞭解「same-site」和「same-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 可提供的資料。
由您設定的 Referrer-Policy
標頭會決定從網站要求中傳送的確切資訊至 Referer
標頭。
如果不設定這項政策,系統會使用瀏覽器的預設值。網站通常會依照瀏覽器的預設值來設定。
若是導覽和 iframe,也可以透過 JavaScript 使用 document.referrer
存取 Referer
標頭中顯示的資料。
截至最近,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
提供更多隱私權。使用這項政策時,只有 origin 會在跨來源要求的 Referer
標頭中傳送。
這樣可以防止在完整網址的某些部分 (例如路徑和查詢字串) 中存取私人資料外洩。
例如:
跨來源要求,從 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
標頭值是完整網址。
例如:Same-origin 要求從 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:最佳做法,瞭解瀏覽器預設值及其演變。
在網站上導入明確的隱私權加強政策
您的網站應在「來源」的要求中傳送哪種 Referer
,也就是您應該為網站設定哪種政策?
即使 Chrome 將改變方向,我們仍建議您立即設定明確的隱私權加強保護政策,例如 strict-origin-when-cross-origin
或更嚴格的政策。
這麼做不僅能保護使用者,還能讓網站在不同瀏覽器上的行為更為準確。在大部分的情況下,您可以直接控制網站,而不是讓網站依賴瀏覽器預設值。
如要進一步瞭解如何設定政策,請參閱參照網址和參照網址:最佳做法。
關於 Chrome Enterprise
IT 管理員可以在企業環境中強制使用 no-referrer-when-downgrade
先前的預設參照網址政策 ForceLegacyDefaultReferrerPolicy
,如此一來,企業就能有更多時間測試及更新應用程式。
這項政策將在 Chrome 第 88 版中移除。
提供意見
有任何意見要分享或需要回報嗎?歡迎針對 Chrome 的推送意圖提供意見,或傳送電子郵件至 @maudnals。
非常感謝所有評論者的貢獻和意見回饋,尤其是 Kaustubha Govind、David Van Cleve、Mike West、Sam Dutton、Rowan Merewood、Jxck 和 Kayce Basques。