pulsa ⌘K para cambiar de herramienta
SECURITY

Comprobador de Cabeceras de Seguridad HTTP

Puntúa las cabeceras de seguridad HTTP de un sitio y ve qué expone cada ausencia.

server
security-headers

🌐 sitekits fetches the URL server-side (private/internal addresses are blocked). Only response headers are read — the body is never retrieved.

§01 ACERCA DE ESTA HERRAMIENTA

Resumen

Los encabezados de seguridad son la parte de la defensa de un sitio que vive íntegramente en la respuesta, lo que los hace fáciles de comprobar y fáciles de equivocar de forma sutil. Un encabezado puede estar presente y no hacer nada: max-age=0 desactiva HSTS, una CSP que contiene 'unsafe-inline' ejecuta igualmente un <script> inyectado, y X-Frame-Options: ALLOW-FROM es ignorado por todos los navegadores que se distribuyen hoy.

Este comprobador recupera la URL del lado del servidor, lee únicamente los encabezados de la respuesta y califica siete puntos sobre una escala ponderada de 100. Los pesos reflejan lo que cada uno evita realmente, y cada nota va acompañada de una observación que nombra la exposición concreta en lugar de un genérico «falta el encabezado».

Cómo se usa

  1. Pegue una URL. El esquema puede omitirse; se asume https.
  2. Lea la calificación y las notas por punto.
  3. Recorra las observaciones. Cada una describe qué queda expuesto, no solo qué falta.

Qué significan los pesos

Contar encabezados trata cada carencia como equivalente. No lo es: un X-Frame-Options ausente puede cubrirse con frame-ancestors en la CSP, mientras que una CSP ausente no tiene sustituto alguno.

PuntoPesoMotivo
Content-Security-Policy25El único encabezado que impide que un script inyectado se ejecute y exfiltre
Strict-Transport-Security20Evita que la primera petición se degrade a HTTP
Protección frente al enmarcado15Clickjacking; se satisface con CSP frame-ancestors o X-Frame-Options
X-Content-Type-Options10Un content-type equivocado reinterpretado como script
Referrer-Policy10Cuánto de sus URL se filtra a otros orígenes
Permissions-Policy10Cámara, micrófono y geolocalización quedando implícitamente abiertos
Divulgación de versión10Una deducción, no una protección — véase más abajo

Cómo se leen los valores

La CSP parte de 100 y pierde puntos por lo que realmente la debilita. 'unsafe-inline' en el script-src efectivo cuesta 45 — pero solo si no hay nonce ni hash, porque los navegadores que los entienden ignoran entonces por completo 'unsafe-inline'. 'unsafe-eval' cuesta 20. Un base-uri ausente cuesta 15: sin él, un elemento <base> inyectado reescribe todas las URL relativas de la página, incluidas las de los scripts. Un object-src 'none' ausente cuesta 10. Content-Security-Policy-Report-Only por sí solo obtiene cero, porque nada se bloquea — es un instrumento de medición, no una defensa.

HSTS se califica por max-age: un año o más alcanza 80, seis meses 60, menos que eso 35, y max-age=0 obtiene 0 porque desactiva HSTS. includeSubDomains suma 20, y es esa suma la que lleva un encabezado correcto a 100. Seis meses es además el mínimo de la lista de precarga de los navegadores, por lo que un valor más corto no puede precargarse, sea cual sea la intención.

La protección frente al enmarcado se satisface con CSP frame-ancestors con la nota máxima, o con X-Frame-Options: DENY/SAMEORIGIN con 60 — sigue funcionando, pero la especificación ha avanzado. ALLOW-FROM obtiene 0: Chrome nunca lo implementó y Firefox lo eliminó en la versión 70, así que una página que dependa de él es enmarcable.

La divulgación de versión es la única deducción. Server: Apache/2.4.41 y X-Powered-By: PHP/7.4.3 indican a un atacante exactamente qué CVE publicadas probar, y ninguno de los dos protege nada. Un valor sin versión como Server: cloudflare no se penaliza: la mayoría de las CDN lo envían siempre y no se puede quitar, así que puntuarlo sería una marca que nadie puede corregir.

Qué no puede ver esta herramienta

Los encabezados son solo una capa. Una puntuación perfecta no dice nada sobre su configuración TLS, los atributos de sus cookies, si la autenticación se aplica de verdad, o si su CSP permite un origen que a su vez aloja contenido controlado por un atacante.

Los atributos de Set-Cookie en particular no se califican, porque son por cookie y no por respuesta: una cookie de sesión sin HttpOnly y Secure es un problema grave que ninguna calificación de encabezados le mostrará.

La CSP también se califica por su sintaxis y sus palabras clave, no por su lista de permitidos. Una política script-src 'self' https://cdn.example.com obtiene la nota máxima, y si esa CDN sirve JavaScript subido por usuarios la política no ofrece protección alguna. La nota mide la forma de la política; los orígenes los juzga usted.

Ejemplos

  • Verificar que un cambio llegó a producción — califique la URL antes y después de un cambio de configuración en la CDN. Los encabezados definidos en el origen son eliminados o sobrescritos por un proxy con frecuencia, y esta es la forma más rápida de ver la respuesta tal como la reciben los navegadores.
  • Explicar un hallazgo a un equipo — las observaciones enuncian el mecanismo, lo que convence más que un nombre de encabezado en una hoja de auditoría.
  • Comprobar el destino de una redirección — los encabezados calificados son los de la respuesta final. Una página de aterrizaje que redirige a otro host aterriza a menudo en un lugar sin ninguno de los encabezados que tenía el punto de entrada.
  • Antes de solicitar la precarga de HSTS — el envío exige un max-age de al menos un año más includeSubDomains y preload. La precarga es difícil de deshacer, así que confirme antes el encabezado en cada subdominio.
  • Construir la política en sí — el generador de CSP monta el encabezado directiva por directiva, y encabezados HTTP muestra la respuesta completa en bruto cuando necesita los valores literales.

Notas

Se califican los encabezados de la respuesta final. Si la URL redirige, la calificación describe dónde se llega, y se muestra la cadena para detectar un punto de entrada cuyos encabezados difieren de su destino.

Se acepta Feature-Policy en lugar de Permissions-Policy para el mismo punto, ya que algunos servidores siguen emitiendo el nombre antiguo. Referrer-Policy obtiene la nota máxima con no-referrer, same-origin, strict-origin y strict-origin-when-cross-origin; otros valores obtienen la mitad, porque filtran más de la URL entre orígenes de lo necesario.

Solo encabezados. Esta herramienta nunca recupera, almacena ni reenvía el cuerpo de la respuesta, y las peticiones a direcciones privadas, de bucle local, enlace local y reservadas se rechazan antes de abrir cualquier conexión — también después de una redirección. Los detalles están en la política de privacidad.

FAQ
¿Por qué mi puntuación es más baja que en otros comprobadores?
La mayoría de los comprobadores cuenta encabezados. Este lee sus valores. Una CSP que contiene 'unsafe-inline' sin nonce ni hash no detiene un script inyectado, y un encabezado HSTS con max-age=0 desactiva HSTS: ambos están presentes y ninguno funciona. Presencia y efecto son cosas distintas, y solo el efecto merece puntuarse.
¿Se descarga el contenido de la página?
No. La petición se hace del lado del servidor y el cuerpo se cancela en cuanto llegan los encabezados. Nada de la página se almacena ni se devuelve, y las direcciones privadas, de bucle local y enlace local se rechazan antes de abrir la conexión.
¿Se siguen las redirecciones?
Hasta cinco saltos, y cada salto se revalida con las mismas reglas de direcciones, por lo que una URL pública no puede redirigir a su red interna. Los encabezados calificados son los de la respuesta final, que suele ser lo que interesa, porque esa es la respuesta que aplica el navegador.
Mi CSP tiene 'unsafe-inline' pero también hashes. ¿Se penaliza?
No. Si script-src contiene algún nonce o hash sha256/384/512, los navegadores que los entienden ignoran por completo 'unsafe-inline'. Es la vía de migración prevista por la especificación, así que la combinación se califica como estricta.
¿Por qué X-Frame-Options por sí solo no obtiene la nota máxima?
Porque CSP frame-ancestors lo sustituyó. X-Frame-Options sigue funcionando en todos los navegadores actuales, así que obtiene 60 y no 0 — pero ALLOW-FROM obtiene 0, porque ningún navegador actual lo ha implementado nunca y una página que depende de él sigue siendo enmarcable.
¿Qué calificación conviene buscar?
A significa que todos los encabezados están puestos y cada valor cumple su función. B y C suelen indicar que falta un encabezado importante o que un valor es permisivo. Por debajo, trate el informe como una lista de comprobación más que como una nota: las observaciones nombran la exposición concreta de cada punto.