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

Maud Nalpas
Maud Nalpas

事前準備工作:

  • 如不確定「網站」和「來源」的差異,請參閱「瞭解『同網站』和『同來源』」。
  • 由於規格中原本的拼字錯誤,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 標頭。

圖表:要求中傳送的參照網址。
Referrer-Policy 和 Referer。

如未設定任何政策,系統會使用瀏覽器的預設值。網站通常會延後至瀏覽器的預設值。

如果是導覽和 iframe,也可以使用 document.referrer,透過 JavaScript 存取 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提供更多隱私權。這項政策會確保跨來源要求 Referer 標頭中只會傳送來源

這樣一來,其他部分 (例如路徑和查詢字串) 的完整網址就不會洩漏私密資料。

圖表:根據政策,為跨來源要求傳送的參照網址。
視政策而定,系統會針對跨來源要求傳送參照網址 (和 document.referrer)。

例如:

跨來源要求,從 https://site-one.example/stuff/detail?tag=red 傳送至 https://site-two.example/…:

  • 使用 no-referrer-when-downgrade:Referer: https://site-one.example/stuff/detail?tag=red
  • strict-origin-when-cross-origin:Referer: 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:Referer: https://site-one.example/stuff/detail?tag=red

會有什麼影響?

根據與其他瀏覽器的討論,以及 Chrome 84 中執行的實驗,預計使用者會遇到的問題有限

如果伺服器端記錄或 Analytics 依賴完整的參照網址,這類資訊的精細度降低可能會造成影響。

您需要做些什麼?

Chrome 預計會在 85 版中開始推出新的預設參照政策 (Beta 版於 2020 年 7 月推出,穩定版於 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

如果您使用來自其他來源的請求參照網址 (更具體來說是路徑和/或查詢字串),且該來源使用瀏覽器的預設參照網址政策 (即未設定任何政策),網站上的某些功能可能會中斷或出現異常行為。

如果這項異動會影響您的網站,請考慮改用其他替代方案

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

  • 請使用替代技術和標頭,例如 OriginSec-fetch-Site,進行 CSRF 保護、記錄及其他用途。請參閱「Referer 和 Referrer-Policy:最佳做法」。
  • 如有需要,您可以與合作夥伴協調特定政策,並向使用者公開透明地說明。 存取權控管 (網站使用參照網址將資源的特定存取權授予其他來源) 可能就是其中一種情況,但 Chrome 變更後,來源仍會透過 Referer 標頭 (和 document.referrer) 分享。

請注意,就參照網址而言,大多數瀏覽器的發展方向類似 (請參閱「參照網址和 Referrer-Policy:最佳做法」一文,瞭解瀏覽器預設值及其演變)。

在網站上實施明確的隱私權強化政策

您的網站發出的要求中應傳送哪些 Referer,也就是您應為網站設定哪些政策?

即使 Chrome 變更在即,建議您現在就設定明確的隱私權強化政策,例如 strict-origin-when-cross-origin 或更嚴格的政策。

這樣一來,不僅能保護使用者,還能讓網站在不同瀏覽器中的行為更加一致。主要是為了讓您掌控網站,而不是讓網站依賴瀏覽器預設值。

如要瞭解如何設定政策,請參閱「參照網址和參照網址政策:最佳做法」。

關於 Chrome Enterprise

IT 管理員可以透過 Chrome 企業政策 ForceLegacyDefaultReferrerPolicy 在企業環境中強制使用 no-referrer-when-downgrade 的舊版預設參照政策。企業將有更多時間測試及更新應用程式。

這項政策將在 Chrome 88 版中移除。

提供意見

您有意見回饋或想回報問題嗎?針對 Chrome 的出貨意圖分享意見,或在 Twitter 上向 @maudnals 提問。

特別感謝 Kaustubha Govind、David Van Cleve、Mike West、Sam Dutton、Rowan Merewood、Jxck 和 Kayce Basques 等審查人員的貢獻和意見回饋。

資源