Foutmeldingen (Content Security Policy) bij de implementatie van het Tracking Script

Bewerkt

Inleiding

Welkom bij ons artikel dat speciaal is geschreven voor webbeheerders en IT-teams! Hierin bespreken we hoe je omgaat met Content Security Policy (CSP) fouten die kunnen optreden bij de implementatie van onze tracking- en functionaliteitsscripts. CSP is een belangrijke beveiligingslaag die helpt bij het voorkomen van aanvallen zoals Cross-Site Scripting (XSS). Het is echter essentieel dat alle externe bronnen en scriptuitvoeringen expliciet worden toegestaan om goed te functioneren.

Wanneer je onze scripts implementeert, kun je tegen verschillende CSP-fouten aanlopen. Deze fouten manifesteren zich meestal in drie hoofdcategorieën: Domeinblokkades, Eval-fouten en Nonce-gerelateerde blokkades. In dit artikel geven we je inzicht in deze problemen en hoe je ze kunt oplossen.

Waarom ons script afwijkt

Ons tracking script wijkt af van een standaard implementatie om twee belangrijke redenen:

  • Extra Functionaliteit: Het script bevat extra JavaScript voor geavanceerde functionaliteiten, zoals de 'Cookie Keeper'.

  • Adblocker Omzeiling: We maken gebruik van Custom URLs (bijvoorbeeld tagging.uwdomein.nl) om de kans op blokkades door veelgebruikte adblockers te verkleinen.

Deze extra functionaliteiten vereisen specifieke aanpassingen in de CSP.

Oplossingen en Vereiste Acties

1. CSP Domeinblokkades

Het Probleem: De browser blokkeert het laden van scripts of de verbinding met ons trackingdomein (bijv. tagging.domeinx.nl) omdat het domein niet is opgenomen in de CSP-header.

De Oorzaak: De script-src of connect-src directive in jouw CSP sluit ons domein uit. Dit is de standaardprocedure van een strikte CSP.

Vereiste Actie: Whitelisten van Tracking Domeinen

Als webbeheerder moet je ervoor zorgen dat alle domeinen die nodig zijn voor de tracking, expliciet worden toegevoegd aan de juiste CSP-directives in de HTTP-header van de website. Voeg het trackingdomein toe aan de script-src en eventueel de connect-src directives.

Let op: Dit is een vereiste aan de kant van de websitebeheerder; wij kunnen dit niet omzeilen.

We hopen dat dit artikel je helpt bij het implementeren van onze scripts zonder CSP-fouten. Mocht je nog vragen hebben, aarzel dan niet om contact met ons op te nemen!

In deze gids bespreken we veelvoorkomende Content Security Policy (CSP) fouten die kunnen optreden bij het gebruik van Google Tag Manager (GTM). We bieden oplossingen en advies om deze problemen op te lossen, zodat je jouw tracking en scripts zonder problemen kunt implementeren.

2. CSP Nonce Fout (Blokkeren van inline scripts)

Het Probleem: De browser blokkeert het uitvoeren van inline scripts, zelfs als het script van een goedgekeurd extern domein komt. Dit gebeurt vaak wanneer de script-src directive een nonce (een unieke, cryptografische waarde per request) bevat.

De Oorzaak: Wanneer een nonce in de CSP-header is opgenomen, wordt de directive unsafe-inline genegeerd. Scripts die dynamisch inline code injecteren (wat GTM en sommige tracking scripts doen) worden alleen uitgevoerd als ze de exact overeenkomstige nonce als attribuut hebben.

Vereiste Actie: Nonce Doorvoeren naar de Script Tag

De oplossing ligt in het dynamisch doorgeven van de server-gegenereerde nonce aan de Tag Manager script tag.

  • Zorg dat de server voor elke request een unieke, cryptografische nonce genereert.

  • Plaats de gegenereerde nonce in de HTTP-header van de CSP.

  • Voeg dezelfde nonce toe als attribuut aan de Tag Manager script tag.\

Hierbij een voorbeeld

<script 
    type="text/javascript" 
    src="https://support.google.com/tagmanager/thread/70416619/the-gtm-tag-id-shows-as-ua-or-aw-not-gtm?hl=nl" 
    nonce="DE_UNIEKE_NONCE_WAARDE"
>
</script>

Belangrijk: Als je strikte CSP-regels hebt op je domein, kan het zijn dat de Custom HTML-tags en Custom JavaScript-variabelen niet werken.

Door deze stappen te volgen, kun je de CSP-fouten in Google Tag Manager effectief oplossen en zorgen voor een veilige en functionele implementatie van je scripts.

Was dit artikel nuttig?

Onze excuses! Zou je ons meer willen vertellen?

Bedankt voor de feedback!

Er is een probleem opgetreden bij het verzenden van uw feedback
Controleer uw verbinding en probeer het opnieuw.