Skip to main content
Alle Termen Glossary

CSP Nonce

Definition

Een CSP nonce is een unieke, willekeurige waarde die per paginabelading wordt gegenereerd en helpt legitieme inline scripts te valideren binnen een Content Security Policy. Door deze nonce toe te voegen aan zowel de CSP-header als toegestane script-tags, kunnen ontwikkelaars specifieke inline scripts toestaan terwijl sterke XSS-bescherming behouden blijft. Deze aanpak is vooral nuttig wanneer dynamische script-invoeging noodzakelijk is maar een strikte CSP gewenst is.

Hoe een CSP-nonce werkt

Een CSP-nonce (number used once, ofwel een eenmalig getal) is een willekeurig, ongokbaar token dat de server bij elke response genereert en op twee plekken neerzet: de nonce-... bron in de Content-Security-Policy-header en een bijpassend nonce-attribuut op elk inline <script> of <style> dat de server wil toestaan. De browser voert een inline script alleen uit wanneer het nonce-attribuut overeenkomt met de waarde die in de header voor precies die paginalading is opgegeven. Omdat het token per request opnieuw wordt gegenereerd en nooit voorspelbaar is, kan markup die een aanvaller later injecteert geen geldige nonce dragen, waardoor de browser weigert het uit te voeren. Zo houdt een site de inline scripts die echt nodig zijn en laat je de allesomvattende unsafe-inline-toestemming vallen waar XSS op leunt.

Waarom nonces belangrijk zijn voor XSS-verdediging

De meeste XSS-verdedigingen storten in op het moment dat een policy unsafe-inline moet toestaan, want dat sleutelwoord vertelt de browser om elk inline script te vertrouwen, inclusief elk script dat een aanvaller weet te injecteren. Een nonce-gebaseerde policy verwijdert dat sleutelwoord: alleen inline code die de server bewust met het huidige token heeft gestempeld, mag draaien. Dit verkleint het aanvalsoppervlak voor reflected, stored en DOM-based XSS zonder dat je lange allowlists van externe hosts hoeft te onderhouden, en het maakt geïnjecteerde event-handlers en inline scripttags die via een kwetsbare template zijn geplant onschadelijk. De nonce is de praktische route naar een strikte CSP, de configuratie die security-teams aanraden, op echte pagina's die nog steeds op wat inline JavaScript leunen.

Nonces goed uitrollen, en waar cside inpast

Genereer de nonce uit een cryptografisch veilige willekeurige bron (minstens 128 bits) en geef bij elke response een verse uit; het hergebruiken van een nonce over gecachte pagina's ondermijnt het hele doel. Plaats hem nooit ergens waar een aanvaller hem kan lezen en terugkaatsen. Combineer hem met strict-dynamic zodat vertrouwde scripts hun eigen afhankelijkheden kunnen laden, en houd een host-allowlist als terugvaloptie voor oudere browsers. Omdat een nonce nog steeds vertrouwt op wat een toegestaan script tijdens runtime doet, kan hij een gecompromitteerd third-party bestand niet tegenhouden. cside vult CSP hier aan door third-party scripts via een Script-methode te routeren en de daadwerkelijke payload te analyseren, zodat kwaadaardig gedrag in realtime wordt geblokkeerd dat een geldige nonce zonder meer had doorgelaten.

Definitie

Moet een CSP-nonce bij elke paginalading veranderen?

Ja. Een nonce moet voor elke HTTP-response opnieuw worden gegenereerd met een veilige willekeurige generator. Als je een pagina samen met de bijbehorende nonce cachet, of dezelfde waarde hergebruikt, kan een aanvaller die één geldige nonce waarneemt die opnieuw afspelen binnen geïnjecteerde markup, wat de bescherming tenietdoet. Statische of gecachte pagina's hebben doorgaans hashes nodig in plaats daarvan.

Definitie

Wat is het verschil tussen een CSP-nonce en een CSP-hash?

Beide laten specifieke inline scripts draaien onder een strikte policy. Een nonce is een willekeurig token per request dat aan de tag en de header wordt toegevoegd, ideaal voor server-gerenderde pagina's. Een hash is een vaste digest van de exacte inhoud van het script, beter geschikt voor statische of gecachte content waar je niet bij elke response een verse token kunt stempelen.

Got more questions

Talk to a security expert

We answer client-side security questions every day. Bring yours.

Boek een demo

Wil je dit doornemen met een engineer?

Dertig minuten, op je eigen site. Geen slides.

We laten je zien:

Welke scripts van derden er nu op je site draaien
Hoe je ervoor staat op PCI DSS 6.4.3 en 11.6.1
Welk deel van je verkeer uit bots en AI-agents bestaat

Liever gewoon een vraag stellen?

Vrije momenten zoeken…

Alleen echte mensen. Wij merken het.

Lukt het boeken niet? Agenda in een nieuw tabblad openen

Wat wil je oplossen?

Vertel het ons in één zin, dan komen we terug met iets bruikbaars in plaats van een standaardverhaal.

Waar we meestal mee helpen:

Zien welke scripts van derden op je site draaien
Bewijs voor PCI DSS 6.4.3 en 11.6.1
Bots, AI-agents en accountovername

Liever meteen een moment inplannen? Kies een tijdstip