Hoe deze controle werkt
Deze controle treedt alleen op als je site de header Referrer-Policy al verstuurt; ontbreekt hij helemaal, dan meldt de headerscanner dat. Scanaris leest de waarde en opent, als die unsafe-url of no-referrer-when-downgrade bevat, een bevinding met lage ernst en de exacte waarde. Elke andere waarde (strict-origin-when-cross-origin, no-referrer, same-origin, origin, strict-origin) wordt goedgekeurd. Hij meet dus niet of je de header hebt, maar of de header die je hebt de volledige URL niet lekt.
Wat de referrer is en wat er lekt
Elke keer dat een gebruiker op een link naar een andere site klikt, of je pagina een afbeelding of script van een ander domein laadt, stuurt de browser de bestemming een header Referer met de URL van de pagina waar hij vandaan komt. Het referrerbeleid bepaalt hoeveel van die URL wordt meegestuurd. Met unsafe-url de volledige URL, inclusief pad en parameters, zelfs als de bestemming HTTP is. Met no-referrer-when-downgrade de volledige URL naar elke HTTPS-bestemming; dat was tot 2020 het standaardgedrag van browsers, en daarom staat het nog in veel oude configuraties. Wat lekt, zijn dingen als /dashboard/facturen/8841, /reset-password?token=..., /zoeken?q=ontslag of de identificatie van een gedeeld document: alles wat in de URL van de gebruiker staat, bereikt advertentienetwerken, analysediensten en elke externe site waarnaar je linkt.
Hoe je het oplost
De aanbevolen waarde voor vrijwel elke site:
Referrer-Policy: strict-origin-when-cross-origin
Die stuurt de volledige URL binnen je eigen domein (je analytics blijven werken), alleen de origin (https://jouwdomein.nl) naar andere domeinen, en niets als de bestemming HTTP is. Het is de standaard van moderne browsers, dus door hem expliciet te zetten leg je alleen vast wat ze al doen. Hoef niemand te weten waar de bezoeker vandaan komt, dan is no-referrer nog strenger.
- Nuxt: in
routeRulesvannuxt.config, onder de regel'/**'. - Next.js: in de functie
headers()vannext.config.js. - Vercel: in
vercel.json. Netlify: in_headers. - nginx:
add_header Referrer-Policy "strict-origin-when-cross-origin" always;. Apache:Header always set Referrer-Policy "strict-origin-when-cross-origin". - Express:
helmet.referrerPolicy({ policy: 'strict-origin-when-cross-origin' }).
Heeft één specifieke link ander gedrag nodig (bijvoorbeeld een affiliateprogramma dat de volledige referrer vereist), stel dat dan in op die link met het attribuut referrerpolicy in plaats van het beleid van de hele site te versoepelen.
Controleer of het opgelost is
curl -sI https://jouwdomein.nl | grep -i referrer-policy
Het moet strict-origin-when-cross-origin of no-referrer tonen. Controleer ook dat er geen <meta name="referrer">-tag in de HTML staat met een andere waarde: de meta heeft op die pagina voorrang op de header.
Veelgestelde vragen
Verlies ik gegevens in Google Analytics of mijn statistiektool?
Nee. De analytics van je eigen site worden gevoed door het script dat je opneemt, niet door de referrer. Wat verandert, is wat de sites waarnaar je linkt zien: in plaats van de exacte pagina zien ze je domein. Voor je eigen interne pagina's blijft de volledige referrer behouden.
Mijn site heeft geen URL's met gevoelige gegevens.
Vandaag niet. Een link om een wachtwoord te resetten, een bestelnummer of een zoekparameter duiken op zodra de site groeit. Het juiste beleid instellen kost één regel en heeft geen bijwerkingen.
Waarom was no-referrer-when-downgrade de standaard?
Omdat in de beginjaren van het web de volledige referrer als nuttig gold en HTTPS een minderheid was. Chrome, Firefox en Safari veranderden de standaard tussen 2020 en 2021 naar strict-origin-when-cross-origin, precies vanwege de lekken die deze gids beschrijft. Alle gerelateerde headers worden uitgelegd in HTTP-headers voor mensen.