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.
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
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

script-nonce
report-uri
report-to
Nog niets gebouwd. Vink enkele bronnen aan en druk op Beleid bouwen, of laad het OWASP-basislijnvoorbeeld.
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.
De drie groepen richtlijnen
GroepVoorbeeldenBedieningValt terug op default-src?
Fetch-richtlijnenscript-src, style-src, img-src, connect-src, font-src, object-src, frame-src, worker-src, media-src, manifest-srcwaar elk soort inhoud vandaan mag worden geladenja — een niet-aangevinkte richtlijn erft default-src
Document-richtlijnenbase-uri, form-action, frame-ancestors, sandboxwat de pagina zelf mag doen (ingebed worden, formulieren indienen naar, relatieve URL's oplossen tegen)nee — elk moet expliciet worden ingesteld
Rapportage en overigreport-uri, report-to, upgrade-insecure-requestswaar overtredingsrapporten naartoe gaan, en het upgraden van verouderde URL'snee (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.