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 標頭中只會傳送來源

這樣一來,就能避免從完整網址的其他部分 (例如路徑和查詢字串) 存取私密資料。

圖表:跨來源要求的參照來源會根據政策傳送。
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 標頭值為完整網址。

舉例來說,從 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 版開始推出新的預設參照政策 (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 防護、記錄及其他用途。請參閱「參照網址和參照網址政策:最佳做法」。
  • 如有需要,您可以與合作夥伴協調特定政策,並向使用者說明相關資訊。存取控制:當網站使用參照網址授予其他來源對其資源的特定存取權時,就會發生這種情況,不過在 Chrome 變更後,來源仍會在 Referer 標頭 (以及 document.referrer) 中共用。

請注意,大多數瀏覽器在參照來源方面都朝著類似的方向發展 (請參閱「參照來源和參照來源政策:最佳做法」一文,瞭解瀏覽器的預設設定和演進歷程)。

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

在網站原始要求中,應傳送哪些 Referer,也就是說,您應為網站設定哪些政策?

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

這麼做可保護使用者,並讓網站在不同瀏覽器中運作時更穩定可靠。這項功能主要讓您掌控網站,而非讓網站依賴瀏覽器預設值。

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

關於 Chrome Enterprise

如要強制在企業環境中使用先前的預設參照政策 no-referrer-when-downgrade,IT 管理員可以使用 Chrome Enterprise 政策 ForceLegacyDefaultReferrerPolicy。這可讓企業有更多時間測試及更新應用程式。

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

提供意見

您是否有意見回饋或想回報任何內容?請針對 Chrome 的出貨意圖提供意見回饋,或在推文中向 @maudnals 提問。

感謝所有審查者提供意見回饋,特別是 Kaustubha Govind、David Van Cleve、Mike West、Sam Dutton、Rowan Merewood、Jxck 和 Kayce Basques。

資源