Step three of your Stripe PCI assessment now has a checkbox for Content Security Policy. There's no “not applicable” option. Deploy a report-only CSP, inventory every script on your payment pages, and back up what you tick.
Requirements 6.4.3 and 11.6.1 exist to catch attacks like Magecart-style skimming, where unauthorised scripts capture payment data directly in the browser. In January 2025, the PCI Security Standards Council revised SAQ A. Those two requirements — payment page script authorisation and change detection — came out of the questionnaire and went into a new eligibility condition instead. To use SAQ A at all, you now have to confirm your payment page is protected from script attacks.
Stripe answered the obvious follow-up question — how do you show that — by adding the checkbox. It's not a new requirement. It's an existing one, made impossible to skip past.
Stripe publishes the domains its own scripts need — js.stripe.com, checkout.stripe.com, and so on depending on your integration. Add those to your CSP and Stripe works. That's an allowlist.
It says nothing about the other scripts already on your payment page: the analytics tag, the chat widget, the A/B testing tool, the tag manager that can inject anything at any time. A policy built only from Stripe's list will let Stripe through and leave everything else unaccounted for — because you'd never have shipped a policy that broke your own tools.
The checkbox asks whether you've deployed a CSP. The real question is whether that CSP describes your whole page, not just Stripe's part of it.
Every script on your payment page needs to be known, approved, and documented — not just at your last audit, but continuously.
Any change to your payment page scripts or headers needs to be caught and acted on. Not quarterly. Continuously.
An allowlist covers Stripe. It doesn't cover 6.4.3.
If you're mid-assessment right now, this is the gap between checking the box and being able to back it up if a QSA asks.
New script, modified script, unauthorised dependency — you know when it happens, not at your next assessment.
Learn more about Script Watch →Deploy report-only and every violation becomes a data point — including the ones a static allowlist would never surface, because nothing was ever blocked to reveal them.
Learn more about CSP Reporting →Detects when data starts leaving your payment page somewhere it shouldn't. Destinations, anomalies, and a behavioural record — the evidence a QSA actually wants to see.
Learn more about Data Watch →Monitors your deployed CSP and alerts you the moment it changes. If your policy drifts from what you authorised, you find out before your next assessment does.
Learn more about Policy Watch →The most common objection is “I can't risk blocking something on checkout.” You don't have to. A CSP deployed with Content-Security-Policy-Report-Only blocks nothing. It authorises known-good sources, reports everything outside them, and leaves your page exactly as it is.
Content-Security-Policy-Report-Only: default-src 'self'; report-uri https://your-subdomain.report-uri.com/r/d/csp/enforce
Deploy a report-only policy, and Report URI builds the inventory 6.4.3 asks for from what actually loads on your payment page — not from asking around. Change detection and alerting cover 11.6.1 from day one.
One header. Live in under an hour.
Managing this across multiple properties? Talk to our team →
| Report URI covers | Doesn't replace |
|---|---|
| Script inventory and change detection | Penetration testing |
| CSP enforcement and violation logging | Secure code review |
| Behavioural data exfiltration monitoring | WAF or edge security |
| Audit-ready evidence generation | Vulnerability remediation |
Report URI has been collecting CSP violation data since 2015. Founder Scott Helme investigates and writes about live client-side attacks, including Magecart campaigns, using the same reporting pipeline that powers Script Watch and CSP Reporting on this page.
Report URI is also an Associate Participating Organisation of the PCI Security Standards Council — a standing in the standards community. See what that means →
The only question left is whether yours is a checkbox or a real control.