如果忘記或濫用 Cache-Control 標頭,可能會對網站的安全性和使用者隱私有負面影響。
根據預設,任何類型的快取都能快取資源。
如未使用或濫用 Cache-Control
標頭,可能會對網站和使用者隱私的安全性造成負面影響。
如果有想保留的個人化回覆,建議您採取以下任一做法:
- 防止中繼端快取資源。設定
Cache-Control: private
。 - 設定適當的次要快取金鑰。如果回應因 Cookie (Cookie 儲存憑證時可能發生) 而改變,請設定
Vary: Cookie
。
請繼續閱讀下文,瞭解重要性,並探索:
- 您可能不知道的安全性和隱私權問題
- 不同類型的 HTTP 快取類型和常見誤解
- 建議對高價值網站採取的行動
快取相關安全性和隱私權風險
Spectre 安全漏洞出現漏洞資源
Spectre 漏洞可讓頁面讀取 OS 程序的記憶體。這意味著攻擊者可在未經授權的情況下,取得跨來源資料的存取權。因此,新世代網路瀏覽器將部分功能 (例如 SharedArrayBuffer
或高解析度計時器) 用於跨來源隔離的頁面會受到限制。
新式網路瀏覽器會強制執行跨來源嵌入程式政策 (COEP)。這可確保跨來源資源符合以下情況:
- 不使用 Cookie 要求的公開資源
- 已明確允許透過 CORS 或 CORP 標頭跨來源共用資源
COEP 設定無法防止攻擊者利用「Spectre」。不過,這可確保跨源資源對攻擊者不具價值 (當瀏覽器以公開資源載入時),或是允許與攻擊者分享 (與 CORP: cross-origin
共用時)。
HTTP 快取對 Spectre 有何影響?
如果未正確設定 Cache-Control
標頭,攻擊者可能會執行攻擊。例如:
- 系統會快取憑證的資源。
- 攻擊者載入跨來源隔離頁面。
- 攻擊者再次提出資源請求。
COEP:credentialless
是由瀏覽器設定,因此在沒有 Cookie 的情況下擷取資源。不過,快取可能會改為傳回憑證化的回應。- 然後,攻擊者就能透過 Spectre 攻擊讀取個人化資源。
雖然網路瀏覽器的 HTTP 快取不允許實際執行這類攻擊,但是額外的快取並不在瀏覽器的直接控管範圍內。這可能導致攻擊成功。
有關 HTTP 快取的常見誤解
1. 只有瀏覽器會快取資源
快取通常會有多層快取。有些快取則專供單一使用者使用,有些則提供給多位使用者。有些是由伺服器控制,有些由使用者控管,有些則由中介者控制。
- 瀏覽器快取。這些快取由單一使用者所擁有,並專門用於網路瀏覽器中。避免多次擷取相同的回應,藉此提升效能。
- 本機 Proxy。這個套件可能是由使用者安裝,但也可以由中介商管理,包括公司、其機構或網際網路供應商。本機 Proxy 通常會快取多位使用者的單一回應,進而構成「公開」快取。本機 Proxy 有多個角色。
- 來源伺服器快取 / CDN。這是由伺服器控制。原始伺服器快取的目標是為多位使用者快取相同的回應,藉此降低原始伺服器的負載。CDN 的目標很類似,但會分散在全球各地,並指派給距離最近的使用者來縮短延遲時間。
2. SSL 可防止中介商快取 HTTPS 資源
無論是基於存取目的 (例如分享計量付費連線、病毒檢查或資料遺失防護 (DLP)),許多使用者都會經常使用本機設定的 Proxy。中介快取正在執行 TLS 攔截。
中介快取通常會安裝在公司的員工工作站上。網路瀏覽器已設為信任本機 Proxy 的憑證。
這些 HTTPS 資源最終可能會由本機 Proxy 快取。
HTTP 快取的運作方式
- 根據預設,資源會隱含快取。
- 主要快取金鑰包含網址和方法。(網址、方法)
- 次要快取金鑰是
Vary
標頭中包含的標頭。Vary: Cookie
表示回應取決於Cookie
。 Cache-Control
標頭可提供更精細的控制項。
請為網站採取以下建議行動
高價值網站的開發人員 (包括高流量網站和與個人身分識別資訊互動的網站) 應立即採取行動,提升安全性。
資源的存取權會因 Cookie 而異。如果未採取預防行動,中介快取可能會傳回使用 Cookie 要求的回應,但該要求並未採取預防措施。
建議您採取下列其中一種做法:
- 防止中繼端快取資源。設定
Cache-Control: private
。 - 設定適當的次要快取金鑰。如果回應因 Cookie (Cookie 儲存憑證時可能發生) 而改變,請設定
Vary: Cookie
。
請特別變更預設行為:一律定義 Cache-Control
或 Vary
。
其他注意事項
還有其他類似的攻擊類型使用 HTTP 快取,但這些攻擊使用的機制與跨來源隔離不同。例如,Jake Archibald 就說明瞭如何在 CORS 中獲勝的部分攻擊。
部分網路瀏覽器可因應這類攻擊,而分割 HTTP 快取,取決於是否有透過憑證要求資源回應。截至 2022 年,Firefox 會分割快取,但 Chrome 和 Safari 則不會。 Chrome 日後可能會分割快取。請注意,這些攻擊彼此不同,而且與根據頂層來源分割時可相輔相成。
即使網路瀏覽器可以解決這個問題,本機 Proxy 快取中仍會存在這個問題。因此,我們還是建議您遵循上述建議。
Ben Pattinson 在 Unsplash 上提供的標題相片。