Chrome 新預設參照網址政策 - strict-origin-when-cross-origin

Maud Nalpas
Maud Nalpas

事前準備工作:

  • 若您不確定「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 標頭。

圖:在要求中傳送的參照網址。
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 標頭中傳送。

這樣可以防止在完整網址的某些部分 (例如路徑和查詢字串) 中存取私人資料外洩。

圖:根據政策,針對跨來源要求傳送參照網址。
已根據政策,針對跨來源要求傳送參照網址 (和 document.referrer)。

例如:

跨來源要求,從 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 預設值。

Chrome 螢幕截圖:如何啟用旗標 chrome://flags/#reduced-referrer-granularity。
啟用標記。

您現在可以檢查網站和後端的行為。

為偵測影響,另一項要務是檢查網站的程式碼集是否使用參照網址 (透過伺服器上傳入要求的 Referer 標頭,或者 JavaScript 中的 document.referrer)。

如果您使用來自「其他來源」對您網站的要求參照網址 (更具體來說是路徑和/或查詢字串),「且」這個來源會使用瀏覽器的預設參照網址政策 (也就是未設定任何政策),網站上的某些功能可能會損毀或行為不同。

如果這會影響你的網站,請考慮替代方案

如果使用參照網址存取對網站要求的完整路徑或查詢字串,可以採取下列幾種做法:

  • 針對 CSRF 防護、記錄和其他用途,使用替代技巧和標頭,例如 OriginSec-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。

資源