重定向跟蹤保護

從 79 版開始,Firefox 透過定期清除已知跟蹤器設定的 Cookie 和網站資料來保護使用者免受 **重定向跟蹤** 的侵害。 只有當用戶 阻止跟蹤 Cookie (即,network.cookie.cookieBehavior 首選項設定為 4)時,才會從儲存中清除這些資料。

其他 Cookie 策略的支援由 Bug 1643045 跟蹤。

重定向跟蹤定義

重定向跟蹤是對跨站點導航的濫用,跟蹤器會暫時將使用者重定向到其網站,以便使用第一方儲存來跨網站跟蹤該使用者。

跨站點導航是 Web 的核心功能;一個人可能在搜尋引擎上搜索“最佳跑步鞋”,點選搜尋結果閱讀評論,最後點選連結從線上商店購買一雙鞋。 過去,這些網站中的每一個都可能嵌入來自同一個跟蹤器的資源,而跟蹤器可以使用其 Cookie 將所有這些頁面訪問連結到同一個人。 為了保護使用者的隱私,瀏覽器阻止跟蹤器在第三方環境中使用 Cookie(例如,請參見 Firefox 的 增強型跟蹤保護 (ETP)),但仍然允許它們作為第一方使用 Cookie,因為阻止第一方 Cookie 會導致網站中斷。 重定向跟蹤利用這一點來規避第三方 Cookie 阻止。

重定向跟蹤器透過強制您在這段旅程中進行一次不可察覺的、短暫的停留到其網站,來實現其目的。 因此,您不會直接從評論網站導航到零售商,而是會先導航到重定向跟蹤器,然後才能導航到零售商。 這意味著跟蹤器作為第一方載入。 重定向跟蹤器會將其儲存在其第一方 Cookie 中的識別符號與跟蹤資料關聯,然後將您轉發到零售商。

清除哪些來源?

如果滿足以下條件,則會清除來源

  1. 它在過去 72 小時記憶體儲了 Cookie 或訪問了其他網站儲存(例如,localStorageIndexedDBCache API)。 由於 Cookie 是針對每個主機,因此我們將清除 Cookie 主機的 httphttps 來源變體。
  2. 該來源在我們的跟蹤保護列表中 被歸類為跟蹤器
  3. 沒有與相同基礎域名 (eTLD+1) 相同的來源具有使用者互動許可權。
    • 一旦使用者與來自該來源的頂級文件進行互動,該許可權就會授予來源 45 天。 “互動”包括滾動。
    • 雖然此許可權儲存在每個來源級別,但我們將檢查是否具有相同基礎域名的任何來源具有此許可權,以避免破壞具有子域名和相應 Cookie 設定的網站。

清除哪些資料?

Firefox 將清除 以下資料

  • 網路快取和影像快取
  • Cookie
  • AppCache
  • DOM 配額儲存 (localStorage、IndexedDB、ServiceWorkers、DOM 快取等)
  • DOM 推送通知
  • 報告 API 報告
  • 安全設定(即 HSTS)
  • EME 媒體外掛資料
  • 外掛資料(例如 Flash)
  • 媒體裝置
  • 授予來源的儲存訪問許可權
  • HTTP 身份驗證令牌
  • HTTP 身份驗證快取

注意: 即使我們正在清除所有這些資料,但我們目前只在來源使用 Cookie 或其他網站儲存時才標記來源以進行清除。

儲存清除忽略來源屬性。 這意味著將在 容器 和隔離儲存(即來自 第一方隔離)中清除儲存。

多久清除一次資料?

Firefox 基於內部事件 idle-daily 的觸發來清除儲存,該事件由以下條件定義

  • 它將在最早的最後一次 idle-daily 事件觸發後 24 小時觸發。
  • 如果使用者在最後一次 idle-daily 事件觸發後至少空閒了 3 分鐘(對於 24-48 小時)或 1 分鐘(對於超過 48 小時),它才會觸發。

這意味著每次儲存清除之間至少有 24 小時,並且只有在瀏覽器空閒時才會清除儲存。 在清除 Cookie 時,出於效能原因,我們按建立時間對 Cookie 進行排序,並將它們批次分成 100 個集合(由首選項 privacy.purge_trackers.max_purge_count 控制)。

除錯

可以透過在 about:config 中切換 privacy.purge_trackers.enabled 首選項來啟用或停用重定向跟蹤保護。 此外,只有當 network.cookie.cookieBehavior 首選項在 Firefox 79 及更高版本中設定為 45 時,它才會執行(在 Firefox 80 及更高版本中為 1345)。

可以透過 privacy.purge_trackers.logging.level 首選項設定不同的日誌級別。

為了除錯目的,最簡單的方法是透過 瀏覽器控制檯命令列 直接觸發服務來觸發儲存清除。 請注意,這與您可能用於除錯網站的常規 Web 控制檯 不同,並且要求將 devtools.chrome.enabled 首選項設定為 true 才能以互動方式使用它。 一旦您啟用了瀏覽器控制檯,就可以透過執行以下命令來觸發儲存清除

js
await Components.classes["@mozilla.org/purge-tracker-service;1"]
  .getService(Components.interfaces.nsIPurgeTrackerService)
  .purgeTrackingCookieJars();

可以使用 privacy.userInteraction.expiration 首選項將使用者互動許可權過期的時間設定為更短的時間。 請注意,您需要在訪問要測試的網站之前設定此首選項——它不會追溯應用。

其他實現

WebKit 首次在 ITP 2.0 中釋出了重定向跟蹤保護(他們將相同的攻擊稱為彈跳跟蹤)。 截至 2020 年 7 月,WebKit 的實現與 Firefox 的實現之間存在一些重大差異

  • Firefox 中要清除的來源列表基於我們的 跟蹤保護列表;WebKit 依賴於 ITP 的分類。
  • Firefox 對“互動”的定義包括使用者在以第一方身份訪問來源時滾動;WebKit 沒有包含此定義。
  • 如果來源在過去的 45 天日曆時間內以第一方身份收到了互動,則 Firefox 不會清除其資料;WebKit 的互動視窗為 30 天瀏覽器使用時間(例如,使用者至少與 Safari 互動過一天的時間)。