Bouvet Hardening XP Meetup

På en nylig Enonic-meetup delte Vigdis, Tech Lead og webutvikler i Bouvet, hvordan man kan forbedre sikkerheten til Enonic-applikasjoner ved å konfigurere såkalte "Security Headers", med en dypdykk i "Content Security Policy" (CSP).

Med utgangspunkt i nesten syv års erfaring med å jobbe med Enonic-løsninger på tvers av flere kunder, tilbød Vigdis en praktisk, kodeorientert gjennomgang rettet mot utviklere og team som ønsker å håndheve moderne beskyttelse på klientsiden.

Se presentasjonen:

Hardening XP – Security Headers and Content Security Policy

Hvorfor Security Headers er viktig

Security Headers er en kraftig og ofte underutnyttet måte å beskytte webapplikasjoner mot vanlige sårbarheter som cross-site scripting (XSS), clickjacking og man-in-the-middle-angrep.

Ved å instruere nettlesere om hvordan de skal håndtere innhold, rammer, MIME-typer og eksterne skript, fungerer headers som et defensivt lag i webstacken din.

Blant de mest relevante headerne er:

  • Strict-Transport-Security: Tvinger HTTPS og reduserer SSL-stripping-angrep.
  • X-Frame-Options og Frame-Ancestors: Forhindrer uautorisert innbygging av nettstedet ditt.
  • X-Content-Type-Options: Sikrer at korrekte MIME-typer håndheves.
  • Referrer-Policy: Kontrollerer hvilke refererdata som sendes med alle forespørsler.
  • Permissions-Policy: Nekter tilgang til ulike nettleserfunksjoner (som kamera, geolokasjon eller automatisk avspilling), eller tillater eksplisitt spesifikke opprinnelser å bruke dem.
  • Content-Security-Policy (CSP): Den mest detaljerte og tilpassbare av alle – definerer hvilket innhold som er tillatt å laste inn og hvorfra.

Content Security Policy i praksis

Kjernen i Vigdis' presentasjon fokuserte på CSP. I motsetning til enklere headers, gir CSP utviklere finkornet kontroll over hvilke ressurser som er tillatt, inkludert skript, bilder, stiler og rammer.

Som standard bør CSP være så restriktiv som mulig. Vigdis demonstrerte å starte med default-src 'none', som blokkerer alt, og deretter selektivt tillate kun pålitelige kilder for:

  • script-src, style-src og img-src (vanligvis satt til 'self')
  • frame-src for å tillate innebygginger fra plattformer som YouTube, X eller Instagram
  • Inline-skript via hashes eller nonces, i stedet for den usikre unsafe-inline
Skjermbilde av vanlige CSP-direktiver.

Vigdis forklarte hvordan forskjellige scenarioer krever forskjellige strategier. Statiske inline-skript kan hvitelistes ved hjelp av en hash, mens dynamisk eller brukerkonfigurert innhold bør bruke en nonce. Dette er en tilfeldig verdi som genereres per forespørsel som festes til både skriptet og headeren.

Konfigurer headers i Enonic

Ved hjelp av Security Headers-appen i Enonic gikk Vigdis gjennom oppsett av vanlige headers via et enkelt administratorgrensesnitt.

For Enonic Cloud-distribusjoner bør noen headers, som Strict-Transport-Security, konfigureres på plattformnivå for å unngå duplisering.

Appen tillater direkte konfigurasjon av CSP-regler, og Vigdis viste et tilpasset eksempel med støtte for generering og injisering av nonces via Java-baserte responsprosessorer.

Skjermbilde av administrasjon av Security Headers i Enonic XP.

Hun demonstrerte også hvordan man manuelt beregner en hash for et skript og bruker det via appen – og fremhevet viktigheten av byte-perfekt matching (selv ekstra mellomrom eller nye linjer vil endre hashen).

Forhåndsvisningsmodus i Enonic håndhever ikke CSP, noe som gjør det enklere å feilsøke konfigurasjonsendringer før du går live.

Chromes innebygde utviklerverktøy hjelper deg med å identifisere blokkerte ressurser og gir forslag til hasher eller kilder du kan tillate.

Viktige takeaways

Til slutt delte Vigdis noen anbefalte fremgangsmåter:

  • Bruk Security Headers der det er mulig – de er enkle å sette opp i Enonic og gir reell verdi.
  • For CSP, bruk de strengeste reglene som standard, og tillat eksplisitt bare det som er nødvendig.
  • Unngå unsafe-inline – bruk hasher for statiske skript og nonces for dynamiske.
  • Gå regelmessig gjennom og oppdater hodene dine etter hvert som applikasjonen din utvikler seg.

Sikkerhet er kanskje ikke alltid den mest glamorøse delen av utviklingen. Men som Vigdis viste, med de riktige verktøyene og litt planlegging, kan det være både effektivt og håndterlig innenfor Enonic-plattformen.

Vil du styrke Enonic-løsningen din med CSP og andre headers? Sjekk ut Security Headers-appen eller snakk med teamet ditt om å implementere disse anbefalte fremgangsmåtene i dag.

Velg en plattform som passer for din organisasjon

Relaterte blogginnlegg

Få enda mer innsikt 🤓