Cabeceras de seguridad
Las cabeceras HTTP de seguridad son defensas declarativas: el servidor le dice al navegador cómo comportarse para mitigar XSS, clickjacking, downgrade a HTTP, MIME sniffing, fuga de información y aislamiento de origen. Su ausencia no es un fallo por sí misma, pero habilita o agrava otras vulnerabilidades, por lo que son parte obligatoria de cualquier auditoría.
Modelo de amenaza
Sección titulada «Modelo de amenaza»Sin las cabeceras adecuadas, un XSS reflejado se explota sin fricción, una página se puede
enmarcar (clickjacking), el tráfico se degrada a HTTP (MITM/SSL stripping), los tokens se
filtran por Referer, y el contenido subido se interpreta como ejecutable.
Catálogo (qué ataca cada una y valor recomendado)
Sección titulada «Catálogo (qué ataca cada una y valor recomendado)»Content-Security-Policy (CSP)
Sección titulada «Content-Security-Policy (CSP)»Controla de dónde se cargan recursos y qué scripts se ejecutan: defensa en profundidad
contra XSS y exfiltración. Preferir nonce/hash + strict-dynamic (ver ficha XSS).
Content-Security-Policy: default-src 'self'; script-src 'nonce-RAND' 'strict-dynamic'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'Strict-Transport-Security (HSTS)
Sección titulada «Strict-Transport-Security (HSTS)»Fuerza HTTPS en el navegador, evita downgrade y SSL stripping. Con preload, el
navegador ni siquiera intenta HTTP la primera vez.
Strict-Transport-Security: max-age=63072000; includeSubDomains; preloadAnti-clickjacking
Sección titulada «Anti-clickjacking»CSP frame-ancestors (moderno) y X-Frame-Options (compatibilidad).
Content-Security-Policy: frame-ancestors 'none'X-Frame-Options: DENYX-Content-Type-Options
Sección titulada «X-Content-Type-Options»Evita el MIME sniffing (que el navegador adivine el tipo y ejecute como script algo subido como imagen).
X-Content-Type-Options: nosniffReferrer-Policy
Sección titulada «Referrer-Policy»Limita la fuga de URLs (y tokens en la URL) por la cabecera Referer.
Referrer-Policy: strict-origin-when-cross-originPermissions-Policy
Sección titulada «Permissions-Policy»Restringe APIs potentes del navegador (cámara, micro, geolocalización, USB…).
Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=()Aislamiento de origen (COOP / COEP / CORP)
Sección titulada «Aislamiento de origen (COOP / COEP / CORP)»Protegen frente a ataques cross-origin y side-channel (Spectre) y habilitan APIs de alta
precisión. Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy,
Cross-Origin-Resource-Policy.
Cookies (flags y prefijos)
Sección titulada «Cookies (flags y prefijos)»Set-Cookie: sid=...; HttpOnly; Secure; SameSite=Lax# Prefijos que el navegador fuerza:__Host-sid=...; Secure; Path=/ # solo ese host, sin Domain__Secure-sid=...; SecureCache-Control: no-store en páginas con datos sensibles; Clear-Site-Data en logout.
Red Team
Sección titulada «Red Team»Evalúa qué falta y aprovéchalo: sin CSP → XSS trivial; sin frame-ancestors →
clickjacking; sin HSTS → downgrade/MITM; Referer laxo → fuga de tokens; sin nosniff →
XSS por contenido subido. Herramientas: securityheaders.com, Mozilla Observatory,
nuclei, y Burp.
Blue Team
Sección titulada «Blue Team»Conjunto recomendado (resumen)
Sección titulada «Conjunto recomendado (resumen)»Aplicar todas las anteriores; CSP primero en Report-Only para medir antes de forzar;
__Host- para cookies de sesión; no-store en datos sensibles.
Detección
Sección titulada «Detección»Escaneo periódico de cabeceras en todos los hosts (no solo la home); alertar si faltan
en producción o si una CSP incluye unsafe-inline/unsafe-eval.
CVEs y casos reales
Sección titulada «CVEs y casos reales»- No suelen ser un CVE: son configuración. Su ausencia ha convertido XSS/clickjacking teóricos en explotables en innumerables auditorías y programas de bug bounty, y es motivo habitual de observaciones en informes de cumplimiento (PCI, ENS).
Checklist de prueba
Sección titulada «Checklist de prueba»- CSP presente y robusta (sin
unsafe-inline), evaluada con CSP Evaluator. - HSTS (idealmente con
preload),X-Content-Type-Options: nosniff. -
frame-ancestors/X-Frame-Options. -
Referrer-PolicyyPermissions-Policy. - Flags y prefijos de cookie (
HttpOnly/Secure/SameSite/__Host-). -
Cache-Control: no-storeen páginas con datos sensibles.