Content Security Policy in de praktijk

Content Security Policy is de krachtigste beveiligingsheader die er is, en tegelijk de enige die uw site echt kan breken. Daarom een apart artikel.

Wat het doet

U geeft aan van welke bronnen scripts, stijlen, afbeeldingen en lettertypen geladen mogen worden. Alles daarbuiten wordt door de browser geweigerd.

Slaagt iemand erin kwaadaardige code in uw pagina te krijgen, dan wordt die alsnog niet uitgevoerd omdat de bron niet is toegestaan.

Waarom het lastig is

Een gemiddelde WordPress-site laadt van meer plekken dan u denkt: lettertypen van Google, een videospeler, een kaart, een statistiekpakket, een chatvenster. Vergeet u er één, dan werkt dat onderdeel niet meer.

Begin met rapporteren

Dit is de enige verstandige aanpak. Gebruik eerst de variant die alleen meldt en niets blokkeert:

<IfModule mod_headers.c>
    Header always set Content-Security-Policy-Report-Only "default-src 'self'; img-src *; script-src 'self' 'unsafe-inline'"
</IfModule>

Bekijk daarna de meldingen in de ontwikkelaarsconsole van uw browser. Daar staat precies welke bronnen geblokkeerd zouden zijn.

Pas als u zeker bent

Vul de toegestane bronnen aan tot er geen meldingen meer komen, en zet dan pas de echte header aan door -Report-Only weg te laten.

Wees eerlijk over de moeite

Een goede CSP kost een middag en vraagt onderhoud bij elke nieuwe plugin. Heeft u die tijd niet, doe dan de drie eenvoudige headers wel en laat CSP staan. Half ingesteld is hier slechter dan niet ingesteld.


Was dit onderwerp nuttig voor U? Ja Nee