Content Security Policy for React-apper
Konfigurer en streng CSP-header som hindrer innebygde skript og uautoriserte eksterne ressurser i React-applikasjoner.
Content Security Policy for React-apper er en gratis leksjon i React Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i React Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i React Academy inneholder totalt 4 leksjoner.
Hva er Content Security Policy
Content Security Policy (CSP) er en HTTP-responsheader som forteller nettleseren hvilke innholdskilder som er klarert. Ved å angi nøyaktig hvilke skript, stilark, bilder og skrifter som kan lastes inn, forhindrer CSP at injisert, skadelig innhold kjøres — selv om en XSS-sårbarhet gjør det mulig for angriperen å injisere HTML i siden.
default-src og script-src
default-src 'self' angir grunnlaget: Alle ressurstyper (skript, stilark, bilder, skrifter og rammer) kan bare lastes inn fra samme opprinnelse. script-src 'self' begrenser skriptlasting til samme opprinnelse og blokkerer skript fra eksterne CDN-er med mindre de er oppført eksplisitt. Disse to direktivene utgjør til sammen grunnlaget for en restriktiv CSP.
Hvorfor det er viktig å blokkere eval
eval() konverterer en streng til kjørbar kode under kjøring — akkurat det XSS-payload-er trenger. En CSP med script-src 'self' (uten 'unsafe-eval') blokkerer eval() og relaterte funksjoner som new Function() og setTimeout(string). Dette eliminerer en viktig type kjøring av XSS-payload-er.
strict-dynamic for skriptkjeder
'strict-dynamic' i script-src gir tillit til skript som lastes inn av skript som allerede er klarert. Dette muliggjør dynamiske mønstre for skriptlasting som brukes av bundlere, uten at du må hviteliste hver enkelt CDN-URL. Et klarert skript kan laste inn flere skript, og disse arver tilliten.
Hash-basert CSP for innebygde skript
Hvis applikasjonen trenger et bestemt innebygd skript (for eksempel et initialiseringsskript for analyse), kan du beregne SHA-256-hashen for skriptet og legge til 'sha256-base64hash' i script-src. Bare skript som samsvarer med denne eksakte hashen, får kjøre innebygd. Alle skript som injiseres av en angriper, får en annen hash og blokkeres.
Nonce-basert CSP
En nonce er en kryptografisk tilfeldig verdi som serveren genererer for hver forespørsel. Serveren legger noncen til både i skripttaggen (<script nonce="abc123">) og i CSP-headeren (script-src 'nonce-abc123'). Bare skript med riktig nonce kjøres. Angripere kan ikke forutsi noncen, og injiserte skript kan derfor ikke bruke den.
CSP-rapportering
CSP støtter rapportering av brudd via report-uri /csp-violation-endpoint eller det nyere direktivet report-to. Når nettleseren blokkerer en ressurs på grunn av CSP, sender den en JSON-rapport til endepunktet. Overvåking av disse rapportene hjelper deg med å identifisere både legitime konfigurasjonsproblemer og aktive angrepsforsøk.
Implementering av CSP i Next.js
I Next.js legger du til CSP-headere i middleware: Opprett middleware.ts, generer en nonce, angi Content-Security-Policy-headeren, og send noncen videre til siden via en responsheader. Sideoppsettet leser noncen fra headeren og bruker den på alle innebygde skript og style-tagger.
Testing av CSP uten blokkering
Content-Security-Policy-Report-Only er testmodusen: Nettleseren håndhever ingen regler, men sender bruddsrapporter for alt som ellers ville blitt blokkert. Ta først i bruk Report-Only-modus, rett opp alle brudd, og bytt deretter til den håndhevende Content-Security-Policy-headeren for å unngå å ødelegge applikasjonen.
CSP-brudd i Chrome DevTools-konsollen
Når CSP blokkerer en ressurs, viser Chrome DevTools-konsollen en rød feilmelding som identifiserer den blokkerte URL-en og direktivet som ble brutt. Disse meldingene er svært nyttige under utvikling og testing. Hvert brudd må løses enten ved å rette policyen, flytte ressursen til en tillatt kilde eller bruke en nonce/hash.
Praktisk CSP for React SPA
En praktisk CSP for en React-SPA: default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-NONCE'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https://api.yourdomain.com; frame-ancestors 'none'. frame-ancestors 'none' forhindrer også clickjacking ved å blokkere at applikasjonen bygges inn i iframes.
CSP script-src self
Hva forhindrer script-src 'self' i en Content Security Policy?
Oppsummering av leksjonen
CSP er en HTTP-header som angir klarerte innholdskilder. default-src 'self' og script-src 'self' blokkerer eksterne skript og eval. Innebygde skript tillates via hasher eller noncer. 'strict-dynamic' støtter dynamisk lasting av skript. Bruk Content-Security-Policy-Report-Only til testing før håndheving. Next.js implementerer CSP via middleware. DevTools-konsollen viser brudd i sanntid.
Lær deg React med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 88
- Leksjoner
- 324
Ofte stilte spørsmål
Er leksjonen «Content Security Policy for React-apper» gratis?
Ja – hele teksten i «Content Security Policy for React-apper» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av React Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i React Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Content Security Policy for React-apper»?
Konfigurer en streng CSP-header som hindrer innebygde skript og uautoriserte eksterne ressurser i React-applikasjoner. Du øver på React Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med React Academy?
Ingen tidligere erfaring er nødvendig. React Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Content Security Policy for React-apper»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne React Academy-leksjonen?
Ja. Alle React Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- XSS i React: dangerouslySetInnerHTML og tredjepartsskript
- CSRF-beskyttelse i React- og API-oppsett
- Content Security Policy for React-apper
- Håndtering av hemmeligheter og miljøvariabler