Een jaar geleden heb ik het blog De Content-Security-Policy headers van Timdehoog.nl geschreven. Daarin staan de CSP headers die ik tot dat moment had ingesteld om mijn website te beschermen tegen gevaarlijke externe bronnen.
We zijn een jaar verder en ik heb de lijst weer een aantal keren aangepast met nieuwe domeinnamen. Heb je een WordPress website en wil je CSP headers toevoegen dan kan je onderstaande lijst gebruiken als voorbeeld. Weet je niet wat CSP is, lees dan eerst dit blog voor een toelichting.
Header set Content-Security-Policy "default-src *.timdehoog.nl *.wp.com csi.gstatic.com pzz.io linkpizza.com pzz.events yoast.com; frame-src maps.google.com www.google.com/maps *.timdehoog.nl googleads.g.doubleclick.net *.wp.com; script-src 'unsafe-inline' 'unsafe-eval' *.timdehoog.nl *.googleapis.com *.googlesyndication.com adservice.google.nl adservice.google.com cdn.ampproject.org *.googletagservices.com *.wp.com pzz.io cdn.jsdelivr.net; style-src 'unsafe-inline' *.timdehoog.nl *.googleapis.com *.wp.com *.bootstrapcdn.com cdn.jsdelivr.net; font-src data: *.timdehoog.nl fonts.gstatic.com *.wp.com wordpress.com *.bootstrapcdn.com; media-src *.timdehoog.nl; img-src data: *.timdehoog.nl *.w.org *.wp.com *.wordpress.com *.gravatar.com *.googlesyndication.com ajax.googleapis.com" Header set X-Content-Security-Policy "default-src *.timdehoog.nl *.wp.com csi.gstatic.com pzz.io linkpizza.com pzz.events yoast.com; frame-src maps.google.com www.google.com/maps *.timdehoog.nl googleads.g.doubleclick.net *.wp.com; script-src 'unsafe-inline' 'unsafe-eval' *.timdehoog.nl *.googleapis.com *.googlesyndication.com adservice.google.nl adservice.google.com cdn.ampproject.org *.googletagservices.com *.wp.com pzz.io cdn.jsdelivr.net; style-src 'unsafe-inline' *.timdehoog.nl *.googleapis.com *.wp.com *.bootstrapcdn.com cdn.jsdelivr.net; font-src data: *.timdehoog.nl fonts.gstatic.com *.wp.com wordpress.com *.bootstrapcdn.com; media-src *.timdehoog.nl; img-src data: *.timdehoog.nl *.w.org *.wp.com *.wordpress.com *.gravatar.com *.googlesyndication.com ajax.googleapis.com"
Bovenstaande lijst biedt onder andere ondersteuning voor:
- WordPress.com (wegens gebruik van Jetpack)
- Gravatar.com (voor plaatje van personen die reageren op berichten)
- Content Delivery Networks (o.a. jsdelivr.net en Bootstrapcdn.com)
- Linkpizza
- Google Maps
- Google Advertenties
- Yoast.com (voor Ryte en blogberichten van Yoast.com)
Sommige domeinen hebben verschillende varianten zoals wordpress.com, w.org en wp.com
Kan ik deze lijst 1 op 1 overnemen:
Ja dat zou je kunnen doen. Maar voor het beste resultaat moet je de lijst als basis gebruiken. Haal eruit wat je niet nodig hebt en voeg toe wat ontbreekt.
Voeg de CSP headers toe en bezoek jouw website met een developer toolbar van de browser. Klik door de website heen en bekijk of er CSP foutmeldingen worden getoond. Het vereist behoorlijk wat testen om het goed te krijgen.
Je kan ook een online CSP header inspector gebruiken om te zien welke headers er ingesteld zijn op een website.
Klopt het dat *.domein.nl minder veilig is dan www.domein.nl:
Ja, hoe specifieker hoe veiliger. Alleen gebruiken sommige websites subdomeinen die vaak veranderen zoals Google. Om te voorkomen dat je iedere maand jouw CSP lijst aan moet passen kan je alle subdomeinen in een keer toestaan. Dit moet je natuurlijk niet voor iedere website doen. CSP is leuk maar het is vervelend als bepaalde externe bronnen worden geblokkeerd.