Comprobador de Cabeceras de Seguridad HTTP
Puntúa las cabeceras de seguridad HTTP de un sitio y ve qué expone cada ausencia.
🌐 sitekits fetches the URL server-side (private/internal addresses are blocked). Only response headers are read — the body is never retrieved.
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
- Pegue una URL. El esquema puede omitirse; se asume
https. - Lea la calificación y las notas por punto.
- 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.
| Punto | Peso | Motivo |
|---|---|---|
Content-Security-Policy | 25 | El único encabezado que impide que un script inyectado se ejecute y exfiltre |
Strict-Transport-Security | 20 | Evita que la primera petición se degrade a HTTP |
| Protección frente al enmarcado | 15 | Clickjacking; se satisface con CSP frame-ancestors o X-Frame-Options |
X-Content-Type-Options | 10 | Un content-type equivocado reinterpretado como script |
Referrer-Policy | 10 | Cuánto de sus URL se filtra a otros orígenes |
Permissions-Policy | 10 | Cámara, micrófono y geolocalización quedando implícitamente abiertos |
| Divulgación de versión | 10 | Una 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-agede al menos un año másincludeSubDomainsypreload. 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.