securityheadersmonitoringtutorial

Security Headers Grading Explained: What A-F Means and How to Get an A

M

Monitorion

Engineering Team

||6 min read
Share:

Every time a browser loads your website, your server sends HTTP headers that tell the browser how to handle the page. Security headers are special instructions that protect your users from attacks like cross-site scripting (XSS), clickjacking, and data injection. Missing security headers leave your users — and your reputation — exposed.

The A-F Grading System

Security header grading works like a report card. Each critical header is checked for presence and correct configuration:

  • A+ — All critical headers present and correctly configured, including advanced ones like Permissions-Policy
  • A — All critical headers present: HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy
  • B — Most critical headers present, minor gaps
  • C — Some critical headers missing
  • D — Most critical headers missing
  • F — No security headers at all

Critical Headers You Need

HeaderPurposeExample
Strict-Transport-Security (HSTS)Forces HTTPS connectionsmax-age=31536000; includeSubDomains
Content-Security-Policy (CSP)Prevents XSS and injection attacksdefault-src 'self'; script-src 'self'
X-Frame-OptionsPrevents clickjackingDENY or SAMEORIGIN
X-Content-Type-OptionsPrevents MIME sniffingnosniff
Referrer-PolicyControls referrer information leakagestrict-origin-when-cross-origin
Permissions-PolicyRestricts browser features (camera, mic, etc.)camera=(), microphone=()

How to Monitor Security Headers

Manually checking headers with browser DevTools is fine for a one-time audit. But headers can change when you update your web server, deploy new code, or modify your CDN configuration. Automated monitoring catches regressions before attackers do.

With Monitorion's Security Headers monitor, you get:

  • Automatic A-F grading on every check
  • Alerts when your grade drops (e.g., from A to C after a deploy)
  • Detailed breakdown of which headers are present, missing, or misconfigured
  • Historical tracking to see how your security posture changes over time

Quick Fixes for Common Issues

Missing HSTS? Add to your Nginx config: add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Missing X-Frame-Options? Add: add_header X-Frame-Options "SAMEORIGIN" always;

Missing X-Content-Type-Options? Add: add_header X-Content-Type-Options "nosniff" always;

For Apache, use Header always set instead. For CDNs like Cloudflare, configure these in the dashboard under Security settings.

Start monitoring your security headers — free plan includes Security Headers monitoring.

Share:

Enjoyed this post?

Get monitoring tips and product updates delivered to your inbox.


Related Posts