security-headers — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited security-headers (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Every HTTP response should include security headers. They're your last line of defense and take minutes to add.
Related: xss-csrf, api-security, security-context
Blocks inline scripts, unauthorized sources, and most XSS attacks.
// WRONG — no CSP (any script from anywhere can run)
// RIGHT — restrictive CSP
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; connect-src 'self'; frame-ancestors 'none';Forces HTTPS. Prevents downgrade attacks.
// WRONG — no HSTS (browser may request HTTP first)
// RIGHT — enforce HTTPS for 1 year, include subdomains
Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadPrevents MIME type sniffing. Browser respects the declared Content-Type.
X-Content-Type-Options: nosniffPrevents clickjacking by blocking your site from being embedded in iframes.
// Block all framing
X-Frame-Options: DENY
// Or allow only same-origin framing
X-Frame-Options: SAMEORIGINControls how much URL information is sent to other sites.
// WRONG — sends full URL including query params
Referrer-Policy: no-referrer-when-downgrade
// RIGHT — only sends origin, not full path
Referrer-Policy: strict-origin-when-cross-originRestricts which browser features your site can use.
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()// Node.js / Express — use helmet
const helmet = require('helmet');
app.use(helmet());
// Or set manually
app.use((req, res, next) => {
res.setHeader('X-Content-Type-Options', 'nosniff');
res.setHeader('X-Frame-Options', 'DENY');
res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
res.setHeader('Permissions-Policy', 'camera=(), microphone=(), geolocation=()');
res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
next();
});# Django — use django-csp and SecurityMiddleware
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_CONTENT_TYPE_NOSNIFF = True
X_FRAME_OPTIONS = 'DENY'| Header | Value | Purpose |
|---|---|---|
| Content-Security-Policy | default-src 'self' | Blocks unauthorized scripts/resources |
| Strict-Transport-Security | max-age=31536000 | Forces HTTPS |
| X-Content-Type-Options | nosniff | Prevents MIME sniffing |
| X-Frame-Options | DENY | Prevents clickjacking |
| Referrer-Policy | strict-origin-when-cross-origin | Limits referrer info |
| Permissions-Policy | camera=(), microphone=() | Restricts browser features |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.