CSP-generator — Content Security Policy, met de scherpe randen gemarkeerd
CSP-generator
Vink de richtlijnen en bronnen aan, en deze pagina stelt een correcte enkele-regel Content-Security-Policy samen voor uw antwoordheader of <meta>-tag — plus de notities die ertoe doen: welke richtlijnen nooit terugvallen op default-src, wanneer een hash of nonce unsafe-inline stilzwijgend overschrijft, en wat strict-dynamic uitschakelt. Een ingebouwde SHA-256/384/512-hashgenerator maakt van inline scripts en stijlen 'sha256-…'-bronnen. Alles draait in uw browser; er wordt niets geüpload.
Fetch-richtlijnen — waar inhoud vandaan mag komen
Niet-aangevinkte richtlijnen ontbreken eenvoudig in het beleid; een vinkje zonder geselecteerde bronnen wordt genegeerd. 'none' annuleert de andere vakjes in zijn rij. Het vak extra bronnen neemt een kommagescheiden lijst: hostnamen (cdn.example.com), schema's (https:), hashes en nonces, met of zonder aanhalingstekens.
richtlijn
'self'
'none'
'unsafe-inline'
'unsafe-eval'
'strict-dynamic'
data:
blob:
extra bronnen
Document-richtlijnen — wat de pagina zelf mag doen
Deze vier vallen niet terug op default-src: ze weglaten betekent “geen beperking”, dus een volledig beleid stelt ze expliciet in.
richtlijn
'self'
'none'
extra bronnen
Schakelaars, nonce en rapportage
script-nonce
report-uri
report-to
Beleid
Nog niets gebouwd. Vink enkele bronnen aan en druk op Beleid bouwen, of laad het OWASP-basislijnvoorbeeld.
Hashgenerator voor inline scripts en stijlen
Plak de exacte inhoud tussen <script> en </script> (of het stijlblok) — byte voor byte, zonder afsluitende of voorafgaande nieuwe regel — en kies een algoritme. Het resultaat is de 'sha256-…'-bron die CSP 3 verwacht.
Hashuitvoer verschijnt hier.
Uitrollen als header, niet als meta-tag, wanneer u kunt. De responsheader is de volledige CSP: frame-ancestors, report-uri en report-to werken alleen daar, en een header wordt toegepast vóór de eerste byte HTML wordt verwerkt. De meta-tag is de terugval voor statische bestanden zonder serverconfiguratie. Controleer de headers die uw site werkelijk verstuurt via de controle op beveiligingsheaders, en ontleed ruwe responsblokken op de HTTP-headerparser.
Zelftest Voert de builder opnieuw uit tegen vaste toestanden: volgorde van bronnen, de wederzijdse uitsluiting van 'none', de OWASP-basislijnstring, aanhalen van nonces en hashes, de notities over geen terugval voor base-uri / form-action / frame-ancestors, unsafe-inline overschreven door nonce of hash, strict-dynamic-notities, namen van Report-Only-headers, uitsluitingen van meta-tags, de hashgenerator tegen onafhankelijk berekende SHA-vectoren, en de negatieve paden. Er wordt niets ergens naartoe gestuurd.
Wat is een Content Security Policy?
In één zin: een CSP is een witte lijst die de server met een pagina meestuurt en die de browser precies vertelt waar scripts, stijlen, afbeeldingen en verbindingen vandaan mogen komen — zodat zelfs als een aanvaller HTML injecteert, het geïnjecteerde script alsnog niet laadt, omdat zijn bron niet op de lijst staat.
ja — een niet-aangevinkte richtlijn erft default-src
Document-richtlijnen
base-uri, form-action, frame-ancestors, sandbox
wat de pagina zelf mag doen (ingebed worden, formulieren indienen naar, relatieve URL's oplossen tegen)
nee — elk moet expliciet worden ingesteld
Rapportage en overig
report-uri, report-to, upgrade-insecure-requests
waar overtredingsrapporten naartoe gaan, en het upgraden van verouderde URL's
nee (het zijn geen fetch-richtlijnen)
De scherpste randen, elk in één alinea
'unsafe-inline' versus hashes en nonces. Als een richtlijn een nonce of een hash-bron bevat, zegt CSP 3 dat 'unsafe-inline'wordt genegeerd — het blijft er alleen voor oude browsers. Daarom betekent “we hebben een nonce toegevoegd en unsafe-inline voor de zekerheid behouden” dat moderne browsers de nonce afdwingen. De generator markeert de combinatie zodat het een keuze is, geen ongeluk.
strict-dynamic schakelt uw toegestane lijst uit. Met strict-dynamic in script-src worden hostbronnen, schema's, 'self', 'unsafe-inline' en data: voor scripts allemaal genegeerd; alleen nonces en hashes tellen, en scripts die zij laden mogen verdere scripts laden. Het is de moderne manier om loaderscripts te draaien — maar het maakt de rest van de script-src-lijst decoratief.
Meta-tags zijn tweederangs.frame-ancestors, report-uri en report-to worden genegeerd in <meta http-equiv>. De generator toont welke delen van uw beleid stilzwijgend niet zouden gelden.
Veelgemaakte fouten
Beginnen met default-src * plus een lange lijst uitzonderingen. Werk andersom: een strakke default-src 'self', en verbreed dan alleen de richtlijnen die verbreding nodig hebben. Strakke beleidsregels falen luid tijdens het testen; brede falen stilzwijgend voor altijd.
Uitleveren van script-src 'unsafe-inline' 'unsafe-eval' en het als klaar beschouwen. Dat beleid blokkeert bijna niets wat een XSS-aanval wil doen. Voorzie uw scripts van een nonce of hash, voeg strict-dynamic toe, en laat report-only in productie draaien om regressies te vangen.
Vergeten dat default-src niet alles dekt.base-uri, form-action, frame-ancestors en sandbox hebben geen terugval — de meest geciteerde lacune in echte CSP-uitrollen.
Eerst testen in afdwingmodus. Draai een week in Report-Only met een verzamelaar, lees de rapporten en schakel dan over op afdwinging. Een beleid dat de afrekening breekt is erger dan geen beleid.
Witruimte anders hashen. Een hash dekt de exacte bytes van het inline blok; een “behulpzame” buildstap die afsluitende nieuwe regels trimt verandert elke hash. Genereer hashes uit wat wordt uitgeleverd, niet uit de bron.
Veelgestelde vragen
Heb ik default-src nodig als ik elke richtlijn opsom? Nee, maar het als vloer houden is goede hygiëne: nieuwe fetch-richtlijnen in toekomstige browsers vallen dan terug op uw basislijn in plaats van op “toegestaan”.
Wat doet upgrade-insecure-requests eigenlijk? Het vertelt de browser om elke http://-URL die de pagina zou laden — afbeeldingen, stijlen, fetches — te herschrijven naar https:// voordat hij wordt opgevraagd. Het is een migratiehulpmiddel; het eindresultaat zijn pagina's zonder enige http://-URL.
Nonce of hash? Nonce wanneer u de serverrespons beheert (een willekeurige waarde per respons, in zowel de header als elke scripttag). Hash wanneer de HTML statisch of gecachet is. Nooit een statische nonce — een nonce die niet verandert is gewoon unsafe-inline met extra stappen.
Waarom wordt mijn beleid afgeleverd maar komen overtredingen niet aan? Controleer of u in Report-Only zit (alleen rapporten), of report-uri verwijst naar een verzamelaar die POST accepteert, en of u ook het Reporting-Endpoints / Report-To-mechanisme instelt dat de moderne report-to-richtlijn vereist.
Vervangt een CSP andere beveiligingen? Nee. Het is één laag: blijf uw uitvoer escapen, houd cookies achter HttpOnly en Secure, en houd HSTS aan. De controle op beveiligingsheaders op deze site beoordeelt de hele set.