Content Security Policy
Silktide controleert of elke pagina een Content Security Policy opgeeft: een standaardbeveiligingsmaatregel die browsers vertelt welke bronnen voor scripts, afbeeldingen en andere inhoud de pagina mag gebruiken.
Een Content Security Policy (CSP) wordt geleverd als een of een metatag, bijvoorbeeld:
Content-Security-Policy: default-src 'self'; script-src 'self' scripts.example.com
Dit voorbeeld vertelt de browser om alleen inhoud van je eigen domein te laden, plus scripts van één vertrouwde host.
Waarom dit belangrijk is
Zonder een CSP voert een pagina uit wat deze krijgt aangeleverd. Als een aanvaller erin slaagt een script te injecteren — via een gecompromitteerde tag van een externe partij, een kwetsbaar reactieveld of een gekaapt advertentienetwerk — voert de browser dit uit met volledige toegang tot de pagina, inclusief alles wat je bezoekers invoeren. Deze aanvalsvorm, cross-site scripting, blijft een van de meest voorkomende manieren waarop websites worden gecompromitteerd.
Een CSP is het veiligheidsnet aan de browserzijde: geïnjecteerde inhoud van een niet-goedgekeurde bron wordt eenvoudigweg niet geladen. De CSP documenteert ook met welke externe partijen je pagina's communiceren. Dat helpt bij het aantonen van naleving van privacyregelgeving zoals de .
Zo los je dit op
- Maak een lijst van de legitieme bronnen waarvandaan je pagina's inhoud laden: je eigen domein, je , analytics, lettertypen en ingesloten media.
- Schrijf een beleid dat alleen deze bronnen toestaat. Begin strikt, bijvoorbeeld
met
default-src 'self', en voeg indien nodig specifieke bronnen per type inhoud toe (script-src,img-src,style-src). - Configureer je webserver, hostingplatform of CDN om het beleid als de
header
Content-Security-Policybij elke pagina mee te sturen. Als je headers niet kunt wijzigen, werkt een tag<meta http-equiv="Content-Security-Policy">in de head van de pagina ook, hoewel de header de voorkeur heeft. - Test voordat je het beleid afdwingt: stuur het beleid eerst als
Content-Security-Policy-Report-Onlyen controleer de browserconsole op inhoud die zou zijn geblokkeerd. Let op: dit controle kijkt naar de afdwingende header, dus een beleid dat alleen rapporten maakt, slaagt niet.
Zo test Silktide dit
- Laad elke pagina en verzamel de HTTP-headers, samen met eventuele
http-equiv-metatags op de pagina, die browsers op dezelfde manier behandelen. - Zoek op beide plaatsen naar een waarde voor
Content-Security-Policy. - Rapporteer de pagina als geen van beide aanwezig is of als de waarde leeg is.
- Silktide beoordeelt niet de kwaliteit van het beleid — alleen of er één bestaat.
Problemen oplossen
Ik heb een beleid ingesteld, maar de controle mislukt nog steeds
Controleer of de header aanwezig is op precies de pagina's die worden gescand — beleid is soms alleen geconfigureerd voor de homepage of één virtuele host. Je kunt de headers die een pagina retourneert bekijken in de ontwikkelaarstools van je browser, onder het tabblad Netwerk.
Kan een CSP mijn website laten vastlopen?
Een beleid dat te strikt is, kan je eigen scripts of stijlen blokkeren. Daarom
wordt sterk aangeraden om eerst te testen met
Content-Security-Policy-Report-Only: dit rapporteert schendingen zonder iets
te blokkeren.