Content Security Policy Review & Fixes

A Content Security Policy tells the browser which scripts are allowed to run on your site. Get it right and an injected script simply does not execute. We review what you have today, then write and deploy a policy that holds — without breaking your app.

No commitment required • Free scan of your live security headers

The Challenge

Most fast-built SaaS applications ship with no Content Security Policy at all, or one copied from a blog post and loosened until the app stopped complaining. Either way it blocks nothing. That matters because a single injected script — from a compromised dependency, an ad tag, or a cross-site scripting flaw — can quietly read your customers' data and session tokens from inside the page. Teams avoid fixing it because a badly written policy breaks live payment widgets, chat, and analytics.

What a Content Security Policy Actually Does

A Content Security Policy is a single line your server sends with every page. It lists the places the browser is allowed to load scripts, styles, fonts and images from. Anything from anywhere else is refused before it runs.

That matters because most attacks on a web application end the same way: somebody gets a script onto your page. It might come through a comment box, a compromised npm package, or a marketing tag somebody added last year. Without a policy, the browser runs it and it can read whatever the logged-in customer can see. With a policy, the browser simply refuses.

It sits alongside a handful of other security response headers — HSTS, X-Frame-Options, Referrer-Policy and Permissions-Policy — that together make up what a scanner means when it grades your site's headers.

Check Your Security Headers

Before any work starts, we run a free check on your live site and tell you plainly what is set and what is missing. Here is what we look at and what good looks like.

Content-Security-Policy

Pass: Names specific sources for scripts and styles, and uses a nonce or hash for anything inline.

Fail: Missing entirely, or present but with unsafe-inline, unsafe-eval or a wildcard that switches the protection off.

Strict-Transport-Security

Pass: Long max-age with subdomains included, so browsers refuse to talk to your site over plain HTTP.

Fail: Absent, or set so short that a first visit is still exposed.

X-Frame-Options / frame-ancestors

Pass: Your pages cannot be embedded in someone else's site to trick your customers into clicking.

Fail: Nothing set, so any site can frame your app.

Referrer-Policy

Pass: Limits what of your URLs leaks to third parties — which matters if your URLs contain identifiers.

Fail: Default behaviour, sending full URLs to anywhere your page links or loads from.

Permissions-Policy

Pass: Camera, microphone, geolocation and payment access switched off unless your app genuinely uses them.

Fail: Unset, so any embedded third-party script can ask for them.

Our Solution

We do the careful part for you: work out exactly what your application legitimately loads, write a policy around it, prove it in report-only mode, then switch it on.

Header & Policy Audit

We scan your live site and report what is actually being sent today — your Content Security Policy if you have one, plus HSTS, X-Frame-Options, Referrer-Policy and Permissions-Policy — and explain in plain English what each one is and is not protecting you from.

A Policy Built Around Your App

We map every legitimate script, style, font, image and third-party service your application depends on — payment providers, booking widgets, live chat, analytics — and build a policy that permits precisely those and nothing else.

Report-Only, Then Enforce

We deploy the policy in report-only mode first and watch real traffic, so anything we missed shows up as a violation report rather than a broken page for a customer. Once it is clean, we switch to enforcement and retest.

What We'll Review

Full audit of your live security response headers
Inventory of every legitimate script and third-party service
A ready-to-deploy Content Security Policy for your stack
Report-only rollout with violation monitoring
Nonce or hash strategy for inline scripts, rather than unsafe-inline
HSTS, X-Frame-Options, Referrer-Policy and Permissions-Policy set correctly
Retest and confirmation once the policy is enforced
Written handover so your team can maintain it

What You Gain

Injected Scripts Fail

An attacker who manages to inject a script still gets nothing, because the browser refuses to run it.

Third-Party Risk Contained

If one of your dependencies or ad tags is compromised, the blast radius stops at the policy.

Questionnaire-Ready

Security headers are an easy tick on Cyber Essentials, SOC 2 and enterprise customer security questionnaires.

Nothing Breaks

Report-only rollout means your checkout, chat and analytics keep working while we tighten the policy.

Why Start with Us?

We have done this on live products

We have taken production applications from no policy to full enforcement without downtime, and written up exactly how.

The scan is free

We will look at your live headers and send you a short, readable report whether or not you go any further.

Over two decades of engineering experience

We fix the cause rather than handing you a list. You get a working policy, not a recommendation to write one.

Common Questions

Where this fits

A Content Security Policy limits what an attacker can do once they find a way in. These services find the ways in, and fix them at the source.

OWASP-aligned exploit-led testing of your live application, with a free retest and a letter of attestation.

We build an automated process that fixes vulnerabilities safely in your stack, so findings stop piling up.

Manual and automated review of your source code to find the flaws a policy can only contain.

Our write-up of taking a production application from no policy to full enforcement, step by step.

Our Expertise

AWS Partner Logo

AWS Partner

Certified cloud expertise you can trust

AWS Certified Solutions Architect Associate

Solutions Architect Associate

AWS Certified DevOps Engineer Professional

DevOps Engineer Professional

AWS Certified Solutions Architect Professional

Solutions Architect Professional

AWS Certified Security Specialty

Security Specialty

Request Your Free Security Header Scan