快速回答: LocalStorage 是一種基於瀏覽器的存儲機制,與 cookies 一樣,受到包括歐盟的 ePrivacy 指令和 GDPR 在內的數據隱私法規的約束。在未經用戶事先、知情和自由給予的同意的情況下,存儲或訪問 LocalStorage 中的非必要數據屬於合規違規。大多數組織忽視這一點,因為他們的同意管理工具僅針對 cookies 配置,導致 LocalStorage 完全未被管理。
主要要點
- 根據英國和歐盟法律,LocalStorage 被法律視為與 cookies "類似的技術",這意味著相同的同意規則適用。
- 歐洲數據保護委員會 (EDPB) 確認像 LocalStorage 這樣的技術在存儲或訪問任何非必要數據之前需要事先、知情和自由給予的同意 [2]。
- ICO 區分了對服務絕對必要的存儲和用於跟踪或分析的非必要存儲,只有後者需要明確的同意 [1]。
- 許多同意管理平台默認規範 cookies,但對 LocalStorage 監控不足,造成了顯著的合規缺口 [3]。
- SessionStorage 在用於跟踪或分析目的時,具有與 LocalStorage 相同的隱私影響。
- 撤回同意使網站有義務刪除根據該同意收集的任何 LocalStorage 數據。
- 寫入 LocalStorage 的第三方腳本也需要同意覆蓋,責任在於網站運營商。
- 根據 GDPR 的不合規處罰可能是相當可觀的;當違規行為是系統性的且未披露時,風險會加劇。
LocalStorage 是什麼,它是如何工作的
LocalStorage 是一種內置於現代瀏覽器的 Web Storage API,允許網站直接在用戶的設備上存儲鍵值數據對,沒有過期日期,且每個來源的限制通常在 5-10 MB 之間。與 cookies 不同,LocalStorage 數據從不會隨 HTTP 請求自動發送到服務器,它會持續存在,直到被網站的 JavaScript 或用戶明確清除。
以下是它在實踐中的工作方式:
- 網站的 JavaScript 調用
localStorage.setItem('key', 'value')來寫入數據。 - 該數據在瀏覽器會話之間保持在設備上,直到調用
localStorage.removeItem('key')或localStorage.clear()。 - 只有來自相同來源(協議 + 域名 + 端口)的腳本才能讀取或寫入該數據。
常見用途包括: 存儲用戶偏好(主題、語言)、會話令牌、分析標識符、購物車內容和 A/B 測試變體分配。
關鍵的合規點:因為 LocalStorage 在用戶的設備上存儲數據,它觸發與 cookies 相同的法律框架,根據 ePrivacy 指令和 GDPR,無論該數據是否曾經傳輸到服務器 [4]。
根據 GDPR,您是否需要用戶同意才能使用 LocalStorage
是的,對於任何非必要的 LocalStorage 使用,在存儲或訪問數據之前需要明確的用戶同意。EDPB 確認像 LocalStorage 這樣的技術適用於與 cookies 相同的同意要求,必須事先、知情和自由給予同意 [2]。ICO 進一步規定,同意必須通過明確、無歧義的行為來確認,而不是從瀏覽行為中推斷或從持續使用網站中假定 [1]。
必要性例外: 如果 LocalStorage 僅用於提供用戶明確請求的功能,例如在活動會話中保留購物車中的項目,這可能被視為絕對必要的存儲,無需同意。然而,如果相同的購物車數據用於分析、重定向或行為分析,則必要性例外不再適用。
常見錯誤: 假設因為 LocalStorage 數據不隨 HTTP 請求傳輸,因此它不在隱私法的範疇內。法律適用於在用戶設備上存儲或訪問信息的行為,而不是該信息是否被傳輸。
LocalStorage 和 Cookies 的區別:同意要求
LocalStorage 和 cookies 在用於非必要目的時都需要同意,但它們在技術行為和合規工具的處理方式上有所不同。
| 特徵 | Cookies | LocalStorage |
|---|---|---|
| 到期 | 可配置 | 無(直到被清除) |
| 隨 HTTP 請求發送 | 是 | 否 |
| 服務器端訪問 | 是 | 否 |
| 大多數 CMP 默認覆蓋 | 是 | 通常不 [3] |
| 需要同意(非必要) | 是 | 是 |
| 範圍 | 每個域/路徑 | 每個來源 |
實際的差距是顯著的:大多數同意管理平台是圍繞 cookie 阻止和 cookie 分類構建的。LocalStorage 的寫入是通過 JavaScript 進行的,除非特別配置,否則 CMP 可能不會攔截。這就是為什麼 LocalStorage 在雷達下:為什麼它也需要明確的用戶同意不僅僅是一個理論問題,它是大多數網站的一個主動合規盲點 [3]。
為什麼 LocalStorage 需要明確的用戶同意
LocalStorage 需要明確的同意,因為它構成了在用戶設備上訪問或存儲信息的行為,這一行為受到 ePrivacy 指令(及其國家實施)的監管,無論是否涉及個人數據。法律專家將 LocalStorage 分類為英國法律下與 cookies "類似的技術",在任何非必要存儲發生之前需要事先、知情和自由給予的同意 [4]。
其基本邏輯很簡單:法律保護用戶的設備作為其私人領域的延伸。無論數據是存儲在 cookie、LocalStorage、IndexedDB 還是服務工作者緩存中,法律觸發點是存儲行為本身,而不是格式。
有效同意的三個條件(根據 ICO 指導) [1]:
- 自由給予,不得將同意與服務條款接受捆綁。
- 具體且知情,用戶必須知道存儲了什麼以及為什麼。
- 明確,同意必須來自明確的肯定行為,例如勾選復選框。
LocalStorage 是否被視為隱私法下的跟踪
當 LocalStorage 用於識別、分析或監控用戶在會話或頁面之間的行為時,它被視為跟踪。在 LocalStorage 中存儲分析用戶 ID、A/B 測試分配或行為段標籤構成了根據大多數監管解釋的跟踪,無論該數據是否稍後同步到服務器。
這就是 LocalStorage 在雷達下:為什麼它也需要明確的用戶同意的核心,許多開發者將 LocalStorage 視為中立的緩存機制,而監管機構則將任何持久的設備端標識符視為需要同意的潛在跟踪向量。
您可以在 LocalStorage 中存儲個人數據嗎
從技術上講,可以,但這樣做會帶來重大法律風險,通常不建議這樣做。存儲在 LocalStorage 中的個人數據(例如電子郵件地址、設備指紋組件或與個人資料相關聯的用戶 ID)受到所有 GDPR 義務的約束:合法基礎、數據最小化、保留限制和刪除權 [1]。
LocalStorage 特有的風險:
- 數據會無限期保留,除非明確清除,這使得保留合規變得困難。
- 頁面上的任何 JavaScript(包括第三方腳本)都可能訪問來自相同來源的 LocalStorage 數據。
- 沒有內置加密;以明文存儲的敏感數據對任何擁有設備訪問權限或通過 XSS 漏洞的人都是可訪問的。
建議: 避免在 LocalStorage 中存儲可識別的個人數據。如果存儲是必要的,請確保獲得同意、數據最小化,並存在明確的刪除機制。
LocalStorage 與 SessionStorage:隱私影響
SessionStorage 在 Web Storage API 中的行為與 LocalStorage 相同,但當瀏覽器標籤或窗口關閉時,數據會被清除。儘管這種壽命較短,但在用於跟踪或分析時,SessionStorage 仍然受到相同的同意要求 [6]。
合規目的的關鍵區別:
- SessionStorage 可能更容易被視為絕對必要(例如,在多步結帳過程中維護狀態),因為數據不會在會話之外持續存在。
- LocalStorage 幾乎總是需要對跟踪用例獲得同意,因為其持久性在用戶的設備上創建了長期標識符。
這兩種機制都不會自動豁免於隱私法。存儲數據的目的和內容決定了同意義務,而不是存儲類型本身。
如果您在未獲得同意的情況下使用 LocalStorage 會發生什麼
在未獲得有效事先同意的情況下,將 LocalStorage 用於非必要目的違反了 ePrivacy 指令,並且在涉及個人數據的情況下,違反了 GDPR。後果可能包括監管調查、執法行動和聲譽損害。
除了監管風險外,還有一個日益增長的技術執行維度:瀏覽器隱私功能和廣告攔截器越來越多地針對基於 LocalStorage 的跟踪。依賴未經同意的 LocalStorage 進行分析或個性化的網站,可能會發現隨著這些工具的普及,其數據變得越來越不可靠。
實際暴露檢查清單:
- 第三方分析腳本在未獲得同意的情況下寫入 LocalStorage 標識符。
- A/B 測試工具在收集同意之前存儲變體分配。
- 聊天小部件或支持工具在用戶互動之前在頁面加載時初始化 LocalStorage。
- 重定向像素使用 LocalStorage 作為 cookie 同步的後備。
如何在您的網站上實施 LocalStorage 同意
實施 LocalStorage 同意需要一個可以阻止 JavaScript 執行的同意管理平台,而不僅僅是設置 cookie,直到用戶做出有效的同意選擇。僅在 HTTP 層運作的標準 cookie 橫幅將無法攔截 JavaScript 進行的 LocalStorage 寫入 [3]。
逐步實施方法:
- 審核您的 LocalStorage 使用情況。 使用瀏覽器開發者工具(應用程序標籤)和腳本掃描器來識別寫入 LocalStorage 的每個鍵,哪個腳本寫入它,以及其目的。
- 對每個用途進行分類。 將存儲分類為絕對必要、功能性、分析或營銷。只有絕對必要的存儲可以在未獲得同意的情況下進行。
- 選擇一個涵蓋 LocalStorage 的 CMP。 確保您的同意管理平台可以阻止或延遲非必要腳本的 JavaScript 執行,直到獲得同意。Biscotti CMP 被設計用來處理這一級別的腳本級同意管理。
- 實施同意門檻的腳本加載。 只有在用戶接受相關同意類別後,才應加載寫入 LocalStorage 的非必要腳本。
- 提供清晰的同意用戶界面。 同意橫幅必須用簡單的語言描述 LocalStorage 的使用,按目的分類,並提供細分的選擇權。
- 實施撤回和刪除機制。 當用戶撤回同意時,相關的 LocalStorage 鍵必須立即被清除。
用戶撤回同意後如何刪除 LocalStorage 數據
當用戶撤回同意時,網站必須迅速刪除根據該同意收集的任何 LocalStorage 數據。這不是可選的,撤回同意並要求刪除相關數據的權利是 GDPR 的核心原則。
實施模式: