Web Security

How to Check Your Website's Security Headers (and What Each One Actually Stops)

One curl command shows you every security header your site sends. This guide is the decoder: what each header stops, what its absence costs, and the three that matter most.

Webcuris Research

Security Engineering

·2 min read

A terminal row: curl -sI https://your-site — thirty seconds, whole story

Checking your website's security headers takes one command and thirty seconds. Understanding what came back is the part every checklist skips — which header stops which attack, which absences are urgent, and which are noise. This guide is the decoder.

The thirty-second check

every security-relevant header your site sendsbash
curl -sI https://example.com | grep -iE \
  'strict-transport|content-security|x-content-type|x-frame|referrer-policy|permissions-policy|set-cookie'

What each header actually stops

HeaderThe attack it stopsIf it is missing
Strict-Transport-SecuritySSL stripping — intercepting the first plaintext requestOne coffee-shop network between you and a user is enough (full guide)
Content-Security-PolicyInjected scripts executing (XSS)Any reflected or stored injection runs — and note that a CSP containing 'unsafe-inline' stops almost nothing
X-Content-Type-Options: nosniffBrowsers reinterpreting a response as a richer typeAn upload served as text can be sniffed into something executable
X-Frame-Options / frame-ancestorsClickjacking — your UI framed invisibly under someone else's buttonsYour logged-in pages can be embedded and overlaid anywhere
Referrer-PolicyFull URLs leaking to third partiesPath and query strings — tokens included — travel in the Referer header
Permissions-PolicyInjected or third-party code using camera, mic, geolocationPowerful APIs stay available to every script on the page
Severity is not equal. The first two carry most of the risk; the rest are cheap hygiene.

Cookies are headers too

The Set-Cookie line carries its own security surface, and it is worth reading attribute by attribute:

what a session cookie should look likehttp
Set-Cookie: session=…; Secure; HttpOnly; SameSite=Lax; Path=/
  • Secure — never sent over plain HTTP. Without it, one non-HTTPS request exposes the session.
  • HttpOnly — invisible to JavaScript. Without it, any XSS reads the session cookie directly, turning a script bug into full account takeover.
  • SameSite — not attached to cross-site requests. Without it, other sites can ride the session (CSRF).

Reading the result honestly

Presence is the start of the check, not the end of it. A Strict-Transport-Security with max-age=300 protects a visitor for five minutes. A CSP whose `script-src` includes `'unsafe-inline'` reports as present and defends against approximately nothing. Two questions for every header you find: is the value strong enough to do its job, and is it on every response — including error pages, which are exactly where several servers quietly drop custom headers.

Then stop checking by hand

The curl command answers today. Headers regress: a config refactor, a CDN migration, a new load balancer — most missing-header findings on established sites are things that used to be there. A free Webcuris scan reads every header above, judges the values rather than the presence, and shows the exact fix for each gap; monitoring re-checks daily and tells you the day a deploy drops one.

Get the next one

One email when a new article goes out. No newsletter, no drip sequence, no sales follow-up.

Unsubscribe in one click. We never sell or share the address.

Keep reading

Contact

Talk to us.

Questions about what the engine checks, whether it fits your estate, or what it deliberately refuses to do. A person reads every message.

  1. 01You writePlain form, no qualifying call, no obligation. The marketing checkbox is optional and unticked.
  2. 02A person reads itMessages land with the team, not a queue-bot. Nothing is auto-replied.
  3. 03You get an answerTo the address you gave — including “this product is not the right fit”, when that is the honest answer.
Reporting a vulnerability?
Read the disclosure policy first — it tells you what is in scope and what to expect.
New messagereplies go to your email

We reply to this address, so a disposable one will not reach you.

+91

0 / 4000