Onafhankelijke vergelijking · geen betaalde rankings
Home / Blog / Technisch / Content Security Policy: zet een barrière op zonder de voorkant te doorbreken

Content Security Policy: zet een barrière op zonder de voorkant te doorbreken

Een strikte CSP-header op vrijdagavond en de Stripe-kassa verdwijnt: de XSS-barrière wordt alleen ingezet bij alleen rapporteren → handhaven, met marketing in de lus.

Redactie Hébergeurs.eu 5 min

Het beveiligingsteam sluit een audit af met een duidelijke aanbeveling: voer een strikt Content Security Policy in. De ontwikkelaar voegt de header op vrijdagmiddag toe aan de productie. Twintig minuten later laadt de Stripe-kassa niet meer, Google Tag Manager zwijgt en de administratieve backoffice geeft een lege pagina weer. Terugdraaien van de kop, gespannen post-mortem, belofte om “later te hervatten” – wat nooit wordt.

Een goed geleide CSP is geen overstap. Dit is een uitvoerbare witte lijst: de browser voert alleen uit wat u expliciet toestaat voor scripts, stijlen, afbeeldingen, XHR-verbindingen en iframes. Elke marketingpixel, elke webpackbundel, elk betalings-iframe telt – inclusief degene die niemand meer heeft geïnventariseerd sinds de laatste campagne.

De juiste build wordt alleen in rapportage uitgevoerd, met marketing in de lus, een nonce-pijplijn aan de build-kant en een volledige checkout-test voordat wordt overgeschakeld naar afdwingen. Zonder dit straf je de basket, niet de XSS-aanvaller.

Uitrol in vier fasen

Fase 1 — inventarisatie: maak een lijst van alle scripts en stijlen, inclusief de scripts en stijlen die zijn geïnjecteerd door Tag Manager, A/B-testen, chatondersteuning, heatmaps. Exporteer overtredingen vanuit de browser (tabblad Netwerk + console) op kritieke paden: ontvangst, registratie, afrekenen, admin.

Fase 2 — Report-Only twee tot vier weken: header Content-Security-Policy-Report-Only met eindpunt /csp-report of service van derden. Verzamelen, aggregeren op geschonden richtlijn, sorteren: eerst script-src, daarna connect-src, frame-src, img-src.

Fase 3 – oplossingen: nonce per query voor legitieme inline, SHA-256-hash voor statische fragmenten, refactoring naar externe bestanden voor de rest. Elk nieuw marketingdomein doorloopt een CSP-ticket voordat de tag in productie wordt genomen.

Fase 4 – afdwingen met monitoring: schakel over naar ‘Content-Security-Policy’ wanneer kritieke overtredingen gedurende zeven opeenvolgende dagen vrijwel nul zijn. Plan een gedocumenteerde rollback-header (feature flag of nginx-configuratie) en E2E-checkout-test bij het afdwingen van de fasering vóór productie.

Richtlijnen en veelvoorkomende valkuilen

RichtlijnRolLopende val
standaard-srcTerugvalTe tolerant verbergt gaten in script-src
script-srcJavaScriptVergeet js.stripe.com of GTM
stijl-srcCSSInline React/Vue zonder nonce
connect-srcophalen/XHRVergeten betalings- of analyse-API
frame-srciframes3D Secure Stripe geblokkeerd
img-srcAfbeeldingenPixels volgen op onbekend domein

'strikt-dynamisch' met nonce moderniseert de vertrouwensketen: een nonce-script kan nakomelingen laden - testdoel Safari en Firefox, niet alleen Chrome.

'unsafe-inline' en 'unsafe-eval' zijn alleen acceptabel in korte, gedocumenteerde overgangen. Elke gebeurtenis moet een verwijderingsdatum hebben.

Pijpleiding nonce en bouwen

Het raamwerk genereert een nonce per verzoek (sessie of middleware). De sjabloon injecteert <script nonce="{{nonce}}">. De bouwtool behoudt de tijdelijke aanduiding; minificatie mag deze niet verbreken.

Voor onveranderlijke inline inhoud (erfgoed van fragmentanalyses) berekent u de SHA-256-hash en declareert u 'sha256-…' in script-src. Documenteer de build-opdracht in de bewerkingen README.

CI-staging: geautomatiseerde test of de CSP-header aanwezig is en dat de afrekenpagina wordt geladen zonder consoleschending. Blokkeer samenvoeging bij regressie.

Derde partijen: Stripe, GTM, analyses

Stripe vereist doorgaans script-src js.stripe.com, frame-src hooks.stripe.com, connect-src api.stripe.com. Noem ze expliciet - vertrouw niet alleen op default-src.

Google Tag Manager propageert variabele domeinen: leg een “nieuwe tag = CSP-beoordeling” proces op met een SLA van 48 uur. Anders breekt de maandagcampagne dinsdag.

Voer na elke headerwijziging een volledige afrekenrun uit met testkaart, 3-D Secure indien geactiveerd, en webhookbevestiging aan de serverzijde.

Bestuur en rapportage

Noem een CSP-eigenaar in de beveiligings-RACI-matrix – geen vage commissie. Hij neemt deel aan tagmarketingreleases.

Wekelijkse aggregatie van alleen-rapportrapporten: volume per richtlijn, nieuwe domeinen, toegewezen pagina's. Spike na implementatie = terugdraaien of hotfix, geen stilte.

AVG: CSP-rapporten kunnen URL's met parameters bevatten - filter of anonimiseer vóór langdurige opslag.

Beslis en ga vooruit zonder blinde vlek

  1. Inventaris van scripts en stijlen — build, inline, Tag Manager, Stripe; eigenaar CSP genoemd in de RACI.
  2. Alleen rapport 2-4 weken — eindpunt /csp-report tarief beperkt, wekelijkse script-src-triage.
  3. Pipeline nonce of CI-hash — fasering afdwingen vóór productie; test afrekenen en WordPress-beheerder.
  4. Nieuw tagmarketingformulier: script-/connect-/frame-domeinen worden 48 uur vóór publicatie beoordeeld.
  5. Scorecard afdwingen — nul kritieke overtredingen 7 dagen, gedocumenteerde rollback-header.

Voorkant en CDN: controleer headers via curl -I; vergelijk hosts via de overzicht en de vergelijker.

Veelgestelde vragen

CSP blokkeert wat precies?

Het beperkt uitvoerbare bronnen (scripts, stijlen, verbindingen, frames) om de impact van een XSS-injectie te verminderen. De browser weigert alles wat niet op de witte lijst staat, inclusief een vergeten marketingpixel.

Is Report-Only lang genoeg?

Nee: dit is de inventarisatiefase (minimaal 2-4 weken). Overtredingen moeten op kritieke paden vrijwel nul zijn voordat ze in de productie worden afgedwongen.

Hoe beheer ik inline-scripts?

Drie manieren: unieke nonce per verzoek geïnjecteerd door het raamwerk, SHA-256-hash van statische inhoud, of refactoring naar externe bestanden. unsafe-inline is alleen acceptabel bij korte overgangen.

Bestaan ​​Stripe en Tag Manager naast CSP?

Ja, met script-src en connect-src met vermelding van js.stripe.com, GTM-domeinen en betalings-API's. Test de volledige checkout na elke headerwijziging.


Lees twee weken aan CSP-rapporten voordat u het verbiedt: verrassingen komen van marketing, niet van de backend.

Vergelijk Europese providers

Filter op compliance, locatie en gebruikssituatie — open daarna de fiches om het echte bereik te controleren.

Blader door het overzicht
Blog

Gerelateerde lectuur

Alle artikelen →