Comprobación de cabeceras de seguridad

Pegue las cabeceras de respuesta de una página —curl -sI https://your-site.example/en una terminal, o el bloque del panel de red de las herramientas del navegador — y obtenga una calificación deA+ a Fsegún la lista de comprobación OWASP Secure Headers:Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, protección contra el enmarcado,Referrer-Policy, Permissions-Policy, el trío de aislamiento de origen cruzado, fugas de versión, cabeceras obsoletas e indicadores de cookies — cada hallazgo emparejado con elnginx, Apache y Expressque lo corrige. Todo se ejecuta en su navegador; la página nunca contacta con su sitio.
La línea de estado es opcional. Se comprueban todas las líneas Set-Cookie. Para tener una política que calificar, créela en el generador de CSP; para desglosar un bloque de cabeceras línea por línea, use el analizador de cabeceras HTTP.
Todavía no hay calificación. Pegue las cabeceras de respuesta y pulse Comprobar cabeceras, o cargue un ejemplo.
Las líneas de corrección para cada hallazgo aparecen aquí tras una comprobación.
Alcance de este comprobador frente a la Comprobación de seguridad SSL. Esta página califica las cabeceras de respuesta de seguridad (la lista OWASP de arriba). La Comprobación de seguridad SSL califica su configuración HTTPS: cadena de certificados, versiones de protocolo, fortaleza de los cifrados y contenido mixto. HSTS y los indicadores de cookies aparecen en ambas páginas porque ambas listas los incluyen, pero con enfoques distintos: ejecute las dos comprobaciones para tener el panorama completo.
Autocomprobación
Vuelve a ejecutar el calificador frente a bloques de cabeceras fijos: la muestra correcta en A+, la incorrecta en F con cada penalización aplicada, cada regla aislada (la aritmética de la puntuación), el límite por fuga de versión, las advertencias de cookies, las notas de calidad de CSP, frame-ancestors contando como protección contra el enmarcado, los umbrales de calificación a ambos lados de cada frontera, los fragmentos de corrección y las rutas negativas. Nada se envía a ninguna parte.
¿Qué son las cabeceras de seguridad?
En una frase: las cabeceras de seguridad son cabeceras de respuesta que indican al navegador que aplique una protección que no puede deducir por sí mismo — nunca cargar scripts de orígenes desconocidos, nunca hablar HTTP en claro con este host, nunca enmarcar esta página — y cada una cuesta una línea de configuración.
Las cabeceras que califica esta página
CabeceraProtege contraValor recomendado por OWASP
Strict-Transport-Securitydegradación de protocolo y robo de cookies en la primera petición en HTTP planomax-age=63072000; includeSubDomains
Content-Security-Policycross-site scripting, incrustaciones maliciosas, contenido mixtodefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-Optionsconfusión MIME (un script servido como imagen)nosniff
X-Frame-Options / frame-ancestors de CSPclickjacking (su página enmarcada por un atacante)deny / 'none'
Referrer-Policyfiltración de URL (con tokens) a sitios de tercerosno-referrer
Permissions-Policypáginas que usan en silencio cámara, micrófono o geolocalizacióntodas las funciones desactivadas
Cross-Origin-Opener-Policyotras ventanas que acceden a su contexto de navegaciónsame-origin
Cross-Origin-Embedder-Policycarga de recursos que no optaron por ello (habilita el aislamiento de procesos)require-corp
Cross-Origin-Resource-Policysus recursos incrustados por otros sitiossame-origin
Cómo se calcula la calificación

Empiece en 100 y reste: −25 si falta CSP, −20 si falta HSTS, −10 cada una si faltan X-Content-Type-Options, Referrer-Policy o cualquier protección contra el enmarcado, −5 cada una por el trío de origen cruzado y por Permissions-Policy, −5 por las fugas de versión en Server/X-Powered-By (con límite), y −5 por un X-XSS-Protection distinto de cero. Calificaciones por letra: 100 = A+, 90+ = A, 80+ = B, 70+ = C, 60+ = D, por debajo = F. Las notas informativas (indicadores de cookies, control de caché, calidad de CSP) no restan.

Errores habituales
  • Establecer cabeceras en las respuestas equivocadas. Añádalas a todas las respuestas, incluidas las páginas de error y las redirecciones — para eso sirve el always de add_header ... always; (nginx) y de Header always set (Apache).
  • Probar solo la página principal. Los proxies, las cachés y las aplicaciones heredadas a veces eliminan o sobrescriben cabeceras solo en algunas rutas. Compruebe las páginas que importan: inicio de sesión, pago, endpoints de la API.
  • Mantener X-XSS-Protection. El auditor que controlaba causó vulnerabilidades propias; los navegadores lo eliminaron. Un valor distinto de cero resta puntos a propósito: elimínelo y deje que CSP haga el trabajo.
  • Creer que X-Frame-Options está al día. No puede permitir orígenes concretos y no está en el estándar de CSP; frame-ancestors es el sustituto moderno. Mantener ambas durante la transición es correcto: esta página acepta cualquiera de las dos.
  • Publicar banners de versión. Server: Apache/2.4.58 (Unix) reduce la búsqueda de un atacante de errores conocidos sin ningún beneficio. Elimine la versión y mantenga corto el número de líneas.
Preguntas frecuentes

¿Por qué COOP/COEP/CORP valen solo 5 puntos cada una? El trío es la capa más reciente, necesaria sobre todo cuando se quiere aislamiento de procesos (SharedArrayBuffer, endurecimiento frente a Spectre). Un sitio sin ellas conserva sus protecciones básicas; con ellas, algunas incrustaciones de origen cruzado requieren ajustes — por eso pesan menos que CSP o HSTS.

¿Una calificación alta significa que el sitio es seguro? No: significa que las cabeceras de respuesta están configuradas. Las cabeceras de seguridad son una capa: la configuración de TLS, la gestión de sesiones, la validación de entradas y las actualizaciones siguen decidiendo si el sitio es realmente seguro. Ejecute la Comprobación de seguridad SSL para la capa TLS.

¿Por qué mi valor de Permissions-Policy es tan largo? La base de OWASP desactiva explícitamente cada función, de modo que si un navegador añade funciones nuevas no las reactive en silencio. Un valor más corto como camera=(), microphone=(), geolocation=() es un buen comienzo; solo tenga presente lo que deja activado.

¿Puedo comprobar desde aquí las cabeceras de cualquier sitio? Esta página nunca hace peticiones de red: califica exactamente el texto que pega, así que funciona detrás de cortafuegos y en hosts internos, y nada de lo que inspecciona sale de su equipo. Obtener las cabeceras es un curl -sI en su terminal.

¿Qué pasa con Clear-Site-Data y X-Permitted-Cross-Domain-Policies? Son útiles en escenarios concretos (respuestas de cierre de sesión; visores heredados de PDF/Flash). Aquí son informativas, no puntúan: enviar Clear-Site-Data en cada respuesta borraría el almacenamiento de sus usuarios en cada carga de página.