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

莫德納爾帕斯
Mau Nalpas

事前準備工作:

  • 如果您不確定「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

這可以避免完整網址和查詢字串等網址的其他部分外洩。

圖:針對跨來源要求,根據政策傳送參照網址。
因政策而異,為跨來源要求傳送參照網址 (和 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 標頭值會是完整網址。

例如:相同來源的要求,從 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: 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。

資源