facebook.com
#03Privacy audit of Meta's flagship social platform
TL;DR
Strong security headers and CSP
5 of 6 security headers present, including a comprehensive Content-Security-Policy with strict source lists and upgrade-insecure-requests. TLS 1.3 with modern cipher suite.
Reject button doesn't stop cookie drops
The 'datr' cookie (400-day lifetime) is set regardless of whether users click 'Allow all' or 'Decline optional'. Meta Beacon telemetry fires in both scenarios.
WebGL fingerprinting fires before consent
Facebook probes WebGL renderer info via getExtension(WEBGL_debug_renderer_info) and getParameter before any consent interaction — equivalent to cookie tracking under ePrivacy Art. 5(3).
Score breakdown
Consent
Legal Pages
Cross-Border
Dark Patterns
Security Headers
Cookie Management
Pre-Consent Tracking
Full audit deck
GDPR compliance
| Article | Status |
|---|---|
| ePrivacy 5(3) | fail |
| Art. 6(1)(a) | fail |
| Art. 5(1)(a) | partial |
| Art. 7(3) | fail |
| Art. 13 | partial |
| Art. 25 | fail |
| EDPB Dark Patterns | fail |
Recommendations
Honour reject choice by not setting datr cookie after decline
The datr cookie (400 days) is set regardless of whether users accept or decline optional cookies. This directly undermines the consent mechanism and violates the principle that rejection must be effective.
ePrivacy Art. 5(3) · CNIL vs Facebook Ireland EUR 60M (Jan 2022); Irish DPC vs Meta EUR 1.2B (May 2023)
Remove pre-consent WebGL fingerprinting
WebGL renderer probing via getExtension(WEBGL_debug_renderer_info) fires before consent. Device fingerprinting falls under ePrivacy Art. 5(3) and requires consent.
ePrivacy Art. 5(3) · EDPB Guidelines 2023 on tracking — fingerprinting equivalent to cookie tracking
Gate Meta Beacon telemetry behind consent
The /ajax/bz beacon endpoint fires pre-consent, transmitting device info, connection quality, and session identifiers. This should be deferred until after positive consent.
ePrivacy Art. 5(3) · CNIL vs Google EUR 150M (Dec 2021) — analytics without consent
Add consent revocation mechanism
No way to withdraw consent was found on the logged-out page. GDPR Art. 7(3) requires withdrawal to be 'as easy as giving consent'.
Art. 7(3) · EDPB Guidelines 05/2020 — revocation must match acceptance ease
Equalise accept and reject button prominence
Replace the plain-text 'Decline optional cookies' with a button matching the visual weight of the blue 'Allow all cookies' button.
EDPB Guidelines 03/2022 · CNIL vs Google (Android) EUR 150M (Jan 2022) — reject must be equally prominent
Add Referrer-Policy header and implement SRI
Referrer-Policy is the only missing security header. Zero of 68 external scripts have Subresource Integrity attributes — implement SRI for at least critical CDN resources.
Art. 32