Sikker koding og OWASP Top 10 for backend · leksjon

Content Security Policy (CSP) for backend

Forstå hvordan backend-konfigurasjoner kan påvirke Content Security Policy (CSP) for å redusere klientbaserte angrep som XSS.

Leksjon 3 av 411 trinn

Content Security Policy (CSP) for backend er en gratis leksjon i Sikker koding og OWASP Top 10 for backend på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Sikker koding og OWASP Top 10 for backend, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Sikker koding og OWASP Top 10 for backend inneholder totalt 4 leksjoner.

Backends rolle i CSP

Velkommen til Content Security Policy (CSP) for backend! De tror kanskje at CSP bare er for frontendutviklere, men backend spiller en avgjørende rolle.

CSP er en sikkerhetsstandard som bidrar til å forhindre angrep på klientsiden, som Cross-Site Scripting (XSS). Den gjør dette ved å fortelle nettleseren hvilke ressurser (skript, stiler og bilder) den har lov til å laste inn og kjøre.

Backend har ansvaret for å levere disse reglene til nettleseren.

Slik leverer backend CSP

Backend leverer CSP-regler til nettleseren ved hjelp av et spesielt HTTP-svarhode kalt Content-Security-Policy. Når nettleseren mottar dette hodet, håndhever den reglene som er definert i det.

Dette betyr at backend-applikasjonen Deres styrer sikkerhetspolicyen for frontend direkte. La oss se hvordan en backend kan angi dette hodet.

Angi CSP-hodet

I en backend-applikasjon legger De vanligvis CSP-hodet til i HTTP-svaret. Dette eksempelet simulerer at en backend sender et grunnleggende CSP-hode.

Direktivet default-src 'self' tillater bare ressurser fra samme opphav som dokumentet.

public class BackendCspExample {
  public static void main(String[] args) {
    System.out.println("HTTP/1.1 200 OK");
    System.out.println("Content-Type: text/html");
    System.out.println("Content-Security-Policy: default-src 'self';");
    System.out.println("");
    System.out.println("<!-- Your secure HTML content goes here -->");
  }
}

Viktige CSP-direktiver for backend

Som backendutvikler vil De ofte definere direktiver som styrer ulike ressurstyper. Noen vanlige er:

  • script-src: Angir gyldige kilder for JavaScript.
  • style-src: Angir gyldige kilder for stilark.
  • img-src: Angir gyldige kilder for bilder.
  • connect-src: Begrenser URL-er som kan lastes inn ved hjelp av skriptgrensesnitt (for eksempel AJAX og WebSockets).

Hvert direktiv kan ha flere tillatte kilder, som 'self', https://example.com eller 'unsafe-inline' (som vanligvis bør unngås).

Begrens innebygde skript med noncer

En vanlig angrepsvektor for XSS er injisering av innebygde skript. CSP kan blokkere disse, men noen ganger er innebygde skript nødvendige.

Backend kan generere en unik, kryptografisk sikker nonce (Number Used Once) for hver forespørsel. Denne noncen legges til både i CSP-hodet og i de tillatte innebygde <script>-taggene.

Generering av nonce i backend

Slik kan en backend generere en nonce. Denne noncen inkluderes deretter i Content-Security-Policy-hodet (for eksempel script-src 'nonce-YOUR_NONCE_HERE') og gjengis i HTML-skript-taggen.

Nettleseren kjører bare innebygde skript som har et samsvarende nonce-attributt.

import java.util.Base64;
import java.security.SecureRandom;

public class NonceGenerator {
  public static void main(String[] args) {
    SecureRandom random = new SecureRandom();
    byte[] nonceBytes = new byte[16]; // 16 bytes for a good nonce
    random.nextBytes(nonceBytes);
    String nonce = Base64.getEncoder().encodeToString(nonceBytes);
    System.out.println("Generated Nonce: " + nonce);
    System.out.println("\nUse this in your CSP header:");
    System.out.println("Content-Security-Policy: script-src 'self' 'nonce-" + nonce + "';");
    System.out.println("\nAnd in your HTML:");
    System.out.println("<script nonce=\"" + nonce + "\">alert('Hello!');</script>");
  }
}

CSP-rapportering: `report-to`

CSP handler ikke bare om blokkering, men også om synlighet. Backend kan angi et rapporteringsendepunkt ved hjelp av direktivet report-to (eller det eldre report-uri).

Hvis en nettleser bryter CSP (for eksempel ved å forsøke å laste inn et skript fra en uautorisert kilde), sender den en JSON-rapport til dette backend-endepunktet. Backend kan deretter logge og analysere disse rapportene for å oppdage mulige angrep eller feilkonfigureringer av policyen.

Integrering av CSP med rammeverk

Moderne backend-rammeverk tilbyr ofte praktiske måter å administrere CSP-hoder på uten å sette sammen strenger manuelt.

  • Spring Security (Java): Har egne konfigurasjoner for HTTP-sikkerhetshoder, inkludert CSP.
  • Helmet (Node.js/Express): En mellomvare som bidrar til å sikre Express-applikasjoner ved å angi ulike HTTP-hoder, inkludert CSP.
  • Django (Python): Kan angi CSP-hoder via mellomvare eller bestemte biblioteker.

Disse verktøyene forenkler implementeringen og bidrar til å sikre beste praksis.

CSP for å forhindre XSS (backendperspektiv)

Fra et backendperspektiv legger riktig konfigurert CSP til et kraftig forsvarslag mot XSS. Selv om en angriper klarer å injisere skadelig innhold i HTML-en, kan CSP forhindre nettleseren i å kjøre det.

Ved å kontrollere Content-Security-Policy-hodet bestemmer backend hvilken type innhold som er sikkert, og reduserer dermed betydelig konsekvensene av sårbarheter på klientsiden.

Utfordring: CSP-hode

Tenk på en backend-tjeneste som bare må tillate skript fra sitt eget domene og fra cdn.example.com. Hvilket CSP-direktiv oppnår dette best?

Oppsummering: backend og CSP

De har lært at Content Security Policy (CSP) er et viktig sikkerhetslag som leveres av backend via HTTP-hodet Content-Security-Policy.

  • Backend angir CSP-hoder for å kontrollere lasting av ressurser.
  • Direktiver som script-src definerer tillatte kilder.
  • Noncer er backend-genererte token som på en sikker måte tillater bestemte innebygde skript.
  • Backend kan samle inn rapporter om brudd via report-to.
  • Rammeverk forenkler implementeringen av CSP.

Ved å administrere CSP aktivt styrker backendutviklere applikasjonens forsvar mot angrep på klientsiden, som XSS, betydelig.

Gratis å komme i gang

Lær deg Sikker koding og OWASP Top 10 for backend 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
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Content Security Policy (CSP) for backend» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Sikker koding og OWASP Top 10 for backend, inkludert «Content Security Policy (CSP) for backend», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Sikker koding og OWASP Top 10 for backend inneholder totalt 4 leksjoner.

Hva lærer jeg i «Content Security Policy (CSP) for backend»?

Forstå hvordan backend-konfigurasjoner kan påvirke Content Security Policy (CSP) for å redusere klientbaserte angrep som XSS. Du øver på Sikker koding og OWASP Top 10 for backend 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 Sikker koding og OWASP Top 10 for backend?

Ingen tidligere erfaring er nødvendig. Sikker koding og OWASP Top 10 for backend 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 (CSP) for backend»?

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 Sikker koding og OWASP Top 10 for backend-leksjonen?

Ja. Alle Sikker koding og OWASP Top 10 for backend-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

  1. Avanserte SQLi- og NoSQLi-teknikker
  2. Omfattende strategier for inputvalidering
  3. Content Security Policy (CSP) for backend
  4. Forebygging av kommando- og LDAP-injeksjon
← Tilbake til Sikker koding og OWASP Top 10 for backend