天天看點

浏覽器 Chrome 86 啟用緩存分區(Cache partitioning)舊緩存政策-單鍵儲存新緩存政策-緩存分區(Cache partitioning)參考資料

所有浏覽器都有自己的緩存機制,它們通過将資源緩存到本地,借此加速使用者通路用戶端的速度,減少伺服器壓力。

近期釋出的 chrome 86 啟用了新的浏覽器緩存政策,我們一起來看看它是什麼,為什麼出現,以及帶來的影響吧!

在介紹它之前,我們先來看看舊的緩存政策。

舊緩存政策-單鍵儲存

chrome 86 版本以前,引用/儲存緩存的鍵名是資源的 URL。如圖:

浏覽器 Chrome 86 啟用緩存分區(Cache partitioning)舊緩存政策-單鍵儲存新緩存政策-緩存分區(Cache partitioning)參考資料

也就是說,如果有其他任何網站引用到了同個 URL的資源,浏覽器會先去緩存裡面查詢有無資源,有則加載本地資源,無則遠端請求。

新緩存政策-緩存分區(Cache partitioning)

從 chrome 86 版本開始,啟用了新的緩存政策-

緩存分區

從前端開發者的角度出發,我得知這個消息的第一反應是:啊!是 chrome 派來解決使用者使用緩存裡的舊版本,而前端資源已經更新導緻的版本一緻性問題吧?畢竟本人遇到的浏覽器緩存導緻唯一問題就是這個,殊不知不同的角度有不同的困惑,緩存分區,主要是解決誰的困惑呢?

為什麼要做緩存分區

其實舊的緩存機制一直表現都挺好的,兢兢業業,奈何人算不如天算。廣告商和分析公司借此可以在使用者不知情的情況下跟蹤使用者行為,攻擊者也可以拿到你的某些網站身份資訊。

具體包括:

判斷使用者是否通路過特定網站

通過檢索緩存是否具有特定于某站點的資源(腳本、圖檔、CSS等)來檢測使用者的浏覽曆史記錄。例如:通過對緩存内容的查詢了解你有哪些社交賬号,利用你的帳戶名稱濫用你的個人資訊。

跨站點搜尋攻擊:判斷使用者是否搜尋過特定内容

存在一些概念的跨站點搜尋攻擊證據,這些概念利用了一些站點(gmail,google search,…)在搜尋結果為空時加載特定圖像的事實。通過打開頁籤并執行搜尋,然後在緩存中檢查該圖像,攻擊者可以檢測搜尋結果中是否存在任意字元串。

通過檢索與搜尋結果相關的圖檔緩存,判斷使用者是否搜尋過特定内容。例如:

淘寶網在搜尋結果為空時才會加載哭哭臉小二的圖檔,可以借此使用者是否搜尋。

購物網站

浏覽器 Chrome 86 啟用緩存分區(Cache partitioning)舊緩存政策-單鍵儲存新緩存政策-緩存分區(Cache partitioning)參考資料

如果整塊搜尋結果是圖檔,圖檔中有搜尋關鍵詞的資訊,那麼甚至還可以擷取使用者的搜尋關鍵字。

跨站跟蹤:共享身份資訊

使用

HTTP 緩存

儲存類似

Cookie

的身份資訊,來進行跨站跟蹤。

我們都知道,Cookie 是無法跨域通路的。

但實際上除了第一方 Cookie,還存在一種第三方 Cookie —— 廣告商的 Cookie

這種 Cookie是由站點内的廣告跟蹤器記錄的。廣告跟蹤器相當于嵌入原站點的另一個網站,于是你就有了兩份 Cookie :

  • 原站點的

    Cookie

    ,用于記住你的登陸。
  • 廣告商的

    Cookie

    ,用于記住你的身份。

通過第三方 Cookie,兩家網站就可以共享同一個Cookie,共享使用者的身份識别資訊。

當然第三方 cookie 也有好處,例如你在淘寶登入了,去天貓就不需要再登入一次了。

怎麼做緩存分區

可惡,為什麼我的隐私在裸奔,想安安靜靜偷偷摸摸的上網,有那麼難嗎?

新的政策橫空出世(實際上從 chrome 77 版本就一直在測試這個功能)新的 chrome 針對這些問題,做了哪些改變呢?

此前資源的存儲鍵隻有一個項,現在則包含三個項,分别為域名 (domain)、目前幀 (domain) 和網址 (URL)。

  • 網頁域名 (http://a.example)
  • 資源的目前 iframe (http://c.example)
  • 資源 URL (https://x.example/doge.png)

新舊政策對比圖

浏覽器 Chrome 86 啟用緩存分區(Cache partitioning)舊緩存政策-單鍵儲存新緩存政策-緩存分區(Cache partitioning)參考資料

例如:

使用者傳回了 https://a.example ,但是圖檔是屬于

iframe

https://c.example 。

遇到這種情況,資源會不會從緩存裡面讀取呢?

答案是不會!因為不比對 Cache Key 為 https://a.example , https://c.example ,以及https://x.example/doge.png 的資源,是以無法使用 https://c.example 裡面的緩存。

使用緩存分區之後的變化

  • 網站網絡流量增加約 4%。 對具體影響什麼參數感興趣的可以戳這裡
  • 廣告商想要從緩存入手跟蹤使用者變得更難。

總結

在網絡隐私越來越重要的今天,chrome 為了保護使用者選擇犧牲一部分不易被察覺的體驗,考慮到我們網絡的速度以及電腦的配置也在一直更新,相信大多數使用者會支援緩存分區。

參考資料

  • Eiji Kitamura-Gaining security and privacy by partitioning the cache
  • 防禦盾-Chrome添加HTTP緩存分區以阻止攻擊,跟蹤
  • feiyu_may-浏覽器緩存帶來的前端項目更新問題及解決方法
  • rivative-Cross-Site Search
  • cross-site-tracking-lets-unpack-that
  • 巴伐利亞啤酒館-你是如何被廣告跟蹤的?

繼續閱讀