重定向跟蹤保護
從 79 版開始,Firefox 透過定期清除已知跟蹤器設定的 Cookie 和網站資料來保護使用者免受 **重定向跟蹤** 的侵害。 只有當用戶 阻止跟蹤 Cookie (即,network.cookie.cookieBehavior 首選項設定為 4)時,才會從儲存中清除這些資料。
其他 Cookie 策略的支援由 Bug 1643045 跟蹤。
重定向跟蹤定義
重定向跟蹤是對跨站點導航的濫用,跟蹤器會暫時將使用者重定向到其網站,以便使用第一方儲存來跨網站跟蹤該使用者。
跨站點導航是 Web 的核心功能;一個人可能在搜尋引擎上搜索“最佳跑步鞋”,點選搜尋結果閱讀評論,最後點選連結從線上商店購買一雙鞋。 過去,這些網站中的每一個都可能嵌入來自同一個跟蹤器的資源,而跟蹤器可以使用其 Cookie 將所有這些頁面訪問連結到同一個人。 為了保護使用者的隱私,瀏覽器阻止跟蹤器在第三方環境中使用 Cookie(例如,請參見 Firefox 的 增強型跟蹤保護 (ETP)),但仍然允許它們作為第一方使用 Cookie,因為阻止第一方 Cookie 會導致網站中斷。 重定向跟蹤利用這一點來規避第三方 Cookie 阻止。
重定向跟蹤器透過強制您在這段旅程中進行一次不可察覺的、短暫的停留到其網站,來實現其目的。 因此,您不會直接從評論網站導航到零售商,而是會先導航到重定向跟蹤器,然後才能導航到零售商。 這意味著跟蹤器作為第一方載入。 重定向跟蹤器會將其儲存在其第一方 Cookie 中的識別符號與跟蹤資料關聯,然後將您轉發到零售商。
清除哪些來源?
如果滿足以下條件,則會清除來源
- 它在過去 72 小時記憶體儲了 Cookie 或訪問了其他網站儲存(例如,localStorage、IndexedDB 或 Cache API)。 由於 Cookie 是針對每個主機,因此我們將清除 Cookie 主機的
http和https來源變體。 - 該來源在我們的跟蹤保護列表中 被歸類為跟蹤器。
- 沒有與相同基礎域名 (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 及更高版本中設定為 4 或 5 時,它才會執行(在 Firefox 80 及更高版本中為 1、3、4 或 5)。
可以透過 privacy.purge_trackers.logging.level 首選項設定不同的日誌級別。
為了除錯目的,最簡單的方法是透過 瀏覽器控制檯命令列 直接觸發服務來觸發儲存清除。 請注意,這與您可能用於除錯網站的常規 Web 控制檯 不同,並且要求將 devtools.chrome.enabled 首選項設定為 true 才能以互動方式使用它。 一旦您啟用了瀏覽器控制檯,就可以透過執行以下命令來觸發儲存清除
await Components.classes["@mozilla.org/purge-tracker-service;1"]
.getService(Components.interfaces.nsIPurgeTrackerService)
.purgeTrackingCookieJars();
可以使用 privacy.userInteraction.expiration 首選項將使用者互動許可權過期的時間設定為更短的時間。 請注意,您需要在訪問要測試的網站之前設定此首選項——它不會追溯應用。