CSP-generator (Content Security Policy)
Lag en Content-Security-Policy som header, meta-tagg og Report-Only med forhåndsinnstillinger, noncer og SHA-256-hasher, og vurder en eksisterende policy.
Start fra en forhåndsinnstilling
Google-vertene er eksempler hentet fra Googles CSP-veiledning for Google-taggen. Google endrer dem fra tid til annen: sjekk gjeldende dokumentasjon og fjern det du ikke bruker.
I en <meta>-tagg ignorerer nettlesere frame-ancestors, report-uri, report-to og sandbox, og Report-Only støttes ikke. Plasser taggen øverst i <head>: den gjelder bare innhold som kommer etter den.
Gjennomgang av denne policyen
Disse kontrollene fant ingen svakheter.
Vurder en eksisterende policy
Slik lager du en policy
- Velg et utgangspunkt under Start fra en forhåndsinnstilling: Streng (nonce + strict-dynamic), Låst statisk nettsted, Typisk nettsted eller Typisk + Google Analytics / Ads. Editoren åpnes med forhåndsinnstillingen for typisk nettsted.
- Juster Direktiver. Hvert felt tar imot kilder atskilt med mellomrom, og et tomt felt utelater direktivet.
- Bruk Rask tillegging for å legge et nøkkelord til det valgte Direktiv:
'self','none','unsafe-inline','strict-dynamic',https:,data:… Legg til en nonce setter inn en tilfeldig 128-bits nonce. - For å tillate et bestemt innebygd skript uten
'unsafe-inline'limer du det inn (eller HTML-en rundt det) under Lag hash for et innebygd skript eller en innebygd stil og klikker Beregn SHA-256 og legg til. - Kryss av for upgrade-insecure-requests hvis noen gamle URL-er fortsatt bruker
http://, og skriv eventuelt inn en URL til rapporteringsendepunkt (valgfritt). - Kopier HTTP-header, Report-Only-header (test uten å blokkere) eller HTML--tagg. Gjennomgang av denne policyen oppdateres mens du skriver.
Vil du kontrollere en policy du allerede har, limer du den inn under Vurder en eksisterende policy og klikker Vurder policy. Last inn i editoren kopierer den inn i feltene. Alt skjer i nettleseren din: ingenting du skriver inn, sendes til en server.
Hva en Content Security Policy gjør
En CSP forteller nettleseren hvilke opphav en side har lov til å laste skript, stiler, bilder, fonter, rammer og tilkoblinger fra. Hovedoppgaven er å begrense cross-site scripting (XSS): selv om en angriper får injisert kode på siden din, hindrer en god policy at det injiserte skriptet kjører. Den styrer også hvem som kan bygge inn siden din (frame-ancestors), hvor skjemaer kan sendes (form-action) og hva <base> kan peke på (base-uri).
Hentedirektiver som img-src eller font-src faller tilbake til default-src når de mangler. base-uri, form-action og frame-ancestors faller ikke tilbake, og det er derfor gjennomgangen ber om dem uttrykkelig.
Noncer, hasher og strict-dynamic
Å tillate verter (script-src https://cdn.example.com) ser trygt ut, men kan ofte omgås: store domener har JSONP-endepunkter og gamle biblioteker som en angriper kan gjenbruke. Tilnærmingen som nettleserprodusentenes sikkerhetsteam anbefaler, er en streng CSP: hvert legitime <script> har en nonce som serveren genererer for hvert svar, eller tillates via hashen sin, og 'strict-dynamic' lar disse pålitelige skriptene laste de skriptene de trenger. I et slikt oppsett er https: og 'unsafe-inline' bare reserver for svært gamle nettlesere, mens moderne nettlesere ignorerer dem.
En nonce fungerer bare hvis den endres for hvert svar og er uforutsigbar. Den som settes inn av Legg til en nonce, er et eksempel: serveren eller rammeverket ditt må generere sin egen. En hash dekker nøyaktig bytene i den innebygde koden, så hvis du formaterer skriptet om, trenger du en ny hash.
Header, Report-Only og meta-tagg
Send policyen som en HTTP-responsheader når det er mulig. Ta den først i bruk som Content-Security-Policy-Report-Only: nettleserne rapporterer brudd (til konsollen, og til endepunktet ditt hvis du har satt ett) uten å blokkere noe, slik at du kan rette opp sidene dine før du håndhever policyen. Rapportinnstillingene legger til report-uri for eldre nettlesere og report-to med en Reporting-Endpoints-header.
Versjonen med <meta http-equiv> er praktisk på statisk hosting, men nettlesere ignorerer frame-ancestors, report-uri, report-to og sandbox i den, og det finnes ingen Report-Only-meta-tagg. Verktøyet fjerner disse direktivene fra taggen og sier fra om det.
Ofte stilte spørsmål
Er 'unsafe-inline' i style-src et problem?
Det er mindre farlig enn i script-src og veldig vanlig, fordi mange biblioteker setter innebygde stiler. Injisert CSS kan likevel ødelegge utseendet på en side eller lekke data, så gjennomgangen oppgir det med lav alvorlighetsgrad.
Er Google Analytics-vertene fullstendige?
De er eksempler fra Googles CSP-veiledning for Google-taggen. Google justerer dem over tid, og regionale domener kan være nødvendige. Sjekk Googles gjeldende dokumentasjon og fjern det du ikke bruker. Det innebygde gtag.js-utdraget trenger også en nonce eller hash.
Hvorfor blokkerer policyen mine egne innebygde skript?
Så snart script-src er satt uten 'unsafe-inline', blir alle innebygde <script>-elementer og onclick=-attributter blokkert. Flytt koden til en fil, eller legg til en nonce eller en hash.
Erstatter en CSP escaping av brukerinndata?
Nei. En CSP er en ekstra forsvarslinje. Fortsett å escape utdata og validere inndata: policyen begrenser skaden når noe slipper gjennom.
Kan jeg ha flere policyer?
Ja: hvis en side mottar flere CSP-headere, må en ressurs oppfylle alle. Lim inn én policy om gangen i vurderingsfeltet.
Relaterte verktøy
- .htaccess-omdirigerings-generator Generer 301- og 302-omdirigeringer for .htaccess eller Nginx, tving HTTPS og www, flytt domene og fiks skråstreker, med sjekker for løkker og kjeder.
- Meta-tag-generator Gratis meta-tag-generator for tittel, meta-beskrivelse, canonical-URL, robots og viewport-tagger, med lengdesjekker og riktig escaped HTML.
- Hash-generator Lag MD5-, SHA-1-, SHA-256- og SHA-512-hasher av tekst eller filer i alle størrelser, og kontroller sjekksummer. Alt kjører i nettleseren din.
- Robots.txt-generator Opprett en gyldig robots.txt-fil med bruker-agent-grupper, Tillat- og Ikke-tillat-regler, sitemaps og crawl-delay, med sjekker for vanlige feil.