at je van een CDN haalt, laadt voor je banner
Op Nederlandse overheidssites is de grootste bron van verkeer voor toestemming geen advertentietracker maar een lettertype, een kaartje of een icoonpakket van een extern adres. Google Fonts, Google Maps, Adobe Typekit, jsDelivr en Cloudflare laden in 97 tot 100 procent van de gevallen al voordat de bezoeker iets heeft geklikt. Dat is geen kwade opzet, het is een bouwkeuze, en het is de goedkoopste te repareren overtreding die er bestaat.
De rangschikking die me verraste¶
Toen ik de 1.718 gemeten overheidssites sorteerde op "welke externe partij laadt het vaakst voordat de bezoeker iets heeft geklikt", verwachtte ik advertentiebedrijven bovenaan. Dat klopte niet.
partij waarvan pre-consent aandeel wat het is
rijksoverheid.nl 668 van 669 99,9% Piwik PRO analytics
googletagmanager.com 193 van 202 95,5% Google Tag Manager
googleapis.com 192 van 196 98,0% Google Fonts en Maps
gstatic.com 168 van 172 97,7% statische Google-bestanden
google-analytics.com 158 van 180 87,8% Google Analytics
google.com 88 van 112 78,6% o.a. Funding Choices
piwik.pro 70 van 72 97,2% Piwik PRO
rovid.nl 48 van 48 100,0% videoplatform
jsdelivr.net 47 van 47 100,0% scriptbibliotheken
cloudflare.com 42 van 42 100,0% scripts en bescherming
readspeaker.com 41 van 41 100,0% voorleessoftware
cookiebot.com 38 van 38 100,0% toestemmingsmodule
typekit.net 30 van 30 100,0% Adobe-lettertypenKijk naar wat daar staat. Lettertypen. Kaarten. Icoonpakketten. Scriptbibliotheken. Voorleessoftware. Dit zijn geen keuzes van een marketingafdeling, dit zijn keuzes van een ontwikkelaar die snel een pagina wilde bouwen. En ze staan bovenaan de lijst van overtredingen.
Waarom een lettertype een privacyprobleem is¶
Een lettertype dat je van googleapis.com haalt, is een verzoek van de browser van je bezoeker naar een server van Google. Dat verzoek bevat het IP-adres van de bezoeker, de user agent, en meestal een referer-header met de pagina waarop hij zich bevindt.
Er komt geen cookie aan te pas. Toch is het een verwerking van persoonsgegevens door een derde partij, zonder grondslag, voordat er toestemming is. De Duitse rechtbank in Munchen kende in januari 2022 schadevergoeding toe aan een bezoeker om precies deze reden, en die uitspraak heeft in Duitsland een golf van claims veroorzaakt.
Voor Nederland is de zaak niet identiek, maar de redenering onder de AVG is dezelfde: er is een ontvanger, er is geen grondslag, en er is geen informatie vooraf.
De reparatie kost een middag¶
Dit is de reden dat ik deze les belangrijk vind: het is de goedkoopste reparatie in het hele veld.
Lettertypen. Download de fontbestanden, zet ze op je eigen server, en verwijs er lokaal naar. Google Fonts staan onder een vrije licentie, dat mag gewoon. Je site wordt er meestal sneller van, omdat je een DNS-lookup en een TLS-handshake naar een vreemd domein uitspaart.
@font-face {
font-family: "Source Serif 4";
src: url("/fonts/source-serif-4.woff2") format("woff2");
font-display: swap;
}Scriptbibliotheken. Hetzelfde verhaal voor jsDelivr, unpkg en cdnjs. Haal het bestand op, zet het in je eigen assets, versienummer erbij. Het argument dat een gedeelde CDN sneller is, is achterhaald: browsers cachen sinds 2020 per site, dus je profiteert niet meer van het bezoek van je gebruiker aan een andere site.
Kaarten. Google Maps vervang je door een statische afbeelding met een link, of door een zelf gehoste kaartlaag op basis van OpenStreetMap. Voor de meeste overheidspagina's is "hier is ons adres, klik voor de route" precies genoeg.
Video. Zie de facade-aanpak in Cookies: functioneel versus niet-functioneel, met voorbeelden.
Iconen. Icoonpakketten van een CDN vervang je door een SVG-sprite in je eigen bestanden. Kleiner, sneller, en geen derde partij.
Wat je overhoudt¶
Als je dit doet, blijft er een categorie over die je niet zomaar kunt zelf hosten: diensten met een functie die op afstand draait. Voorleessoftware, feedbackwidgets, zoekfunctionaliteit. Die horen achter de toestemmingsvraag, of je zoekt een leverancier die zonder externe aanroep werkt.
En dan blijft er nog een categorie over die je juist wel achter de toestemmingsvraag wilt houden maar die je nodig hebt om de site uberhaupt te laten werken: een firewall, een botfilter, een CDN voor je eigen statische bestanden. Die vallen vaker onder de noodzakelijkheidsuitzondering, maar je moet die redenering wel kunnen opschrijven.
Het verschil tussen die twee categorieen is niet technisch. Het is de vraag of de bezoeker de dienst vroeg. Dat is dezelfde vraag als bij de cookies, en het antwoord is even zelden vanzelfsprekend.