Skip to main content

Security

Headers, TLS, bot exposure, and common vulnerability signals across your public surface.

Public-facing security posture: response headers, TLS, DNS/email auth, and known vulnerability signals.

Header configuration quality is graded, not just presence - a misconfigured Content-Security-Policy can be worse than none at all.

Security headers

CheckPasses when
Content-Security-Policy setHeader present with a valid directive
Strict-Transport-Security (HSTS) setmax-age ≥ 15552000 (180 days)
X-Frame-Options setDENY or SAMEORIGIN
X-Content-Type-Options setnosniff
Referrer-Policy setAny valid value
Permissions-Policy setAny valid value
Server / X-Powered-By hiddenVersion not disclosed

Verify these yourself with curl -I https://your-domain.com.

TLS and certificate

CheckPasses when
TLS 1.2 or 1.3 onlyNo TLS 1.0 / 1.1 offered
Certificate valid and trustedValid chain to a trusted root
Certificate expiryMore than 30 days remaining
Strong ciphers onlyNo RC4 / 3DES
HTTPS redirect from HTTP301 or 308 to https://

DNS and email authentication

CheckPasses when
SPF record present and validv=spf1 ending in ~all or -all
DMARC policy setp=reject scores full; p=quarantine partial
DKIM configuredValid DKIM selector record
CAA record presentCAA restricts which CAs may issue

These matter even if you don't send email from the domain - without SPF and DMARC, anyone can spoof it.

Known vulnerabilities and secrets

CheckPasses when
Zero Critical / High CVEsNo High-or-above findings
No secrets in public JS bundlesZero matches from the secret scan

These carry the heaviest weight in the category. A live API key committed into a client-side bundle is already public - treat it as compromised, rotate it, and move it server-side.

Rotate, don't just remove

Deleting a leaked key from your bundle doesn't invalidate it. Anyone who already scraped the file still holds a working credential until you rotate it.