Los encabezados de seguridad que la mayoría de los sitios aún omiten: datos de 49 auditorías reales
Los encabezados de respuesta son líneas únicas de configuración que se incluyen con cualquier despliegue. En los sitios que auditamos, la mayoría no envía ninguno de ellos — Permissions-Policy está ausente en 69%, y el encabezado mejor adoptado de la lista sigue faltando en 41%.
Cada auditoría que realizamos lee los encabezados de respuesta de la página de inicio. 6 de ellos llevan un veredicto de aprobado o desaprobado; CSP report-only y el par de aislamiento de origen cruzado se informan para contexto y nunca se cuentan como fallos. La lectura ocurre en la captura simple HTTP fetch — la misma captura que recibe un rastreador AI — y en la respuesta final después de redirecciones, por lo que un sitio que establece sus encabezados solo en el salto previo a la redirección no recibe crédito por ellos. La pregunta que hace el motor es deliberadamente estrecha: ¿la respuesta llevaba el encabezado en absoluto. En 49 sitios auditados entre mayo 23 y August 31, 2026, la respuesta suele ser no. Permissions-Policy falta en 69% de ellos, Referrer-Policy en 65%, Content-Security-Policy en 61%, X-Frame-Options en 51%, X-Content-Type-Options en 43%, y Strict-Transport-Security — el mejor adoptado de los 6 — en 41%. Metodología: instantánea de auditoría completada más reciente por dominio de nuestro conjunto de comprobaciones actual, aproximadamente mayo 23 – August 31, 2026, 49 dominios distintos, anonimizado. Cada porcentaje es la participación de sitios cuya respuesta de la página de inicio no llevaba ese encabezado. La muestra es auto-seleccionada — propietarios que realizaron una auditoría — y se inclina hacia sitios pequeños y medianos, lo que probablemente subestime la adopción de encabezados en toda la web, ya que las grandes plataformas los establecen en el borde. Trata las participaciones como direccionales para la cola larga.
La comprobación pregunta si el encabezado existe, no si es bueno
La precisión sobre la medición importa aquí, porque establece el techo de lo que estos números pueden afirmar.
El motor lee la página de inicio solo — una URL, una respuesta — y toma los valores de encabezado de la captura simple-HTTP cuando esa captura está disponible, cayendo a la otra captura de la página de inicio cuando no lo está. La presencia significa un valor no vacío. No hay calificación de directivas: un Strict-Transport-Security cuyo max-age es 1 segundo pasa, y lo mismo ocurre con una Content-Security-Policy permisiva suficiente para permitir cualquier cosa. Nada sobre un veredicto aprobado dice que la política esté bien construida.
Eso parece una barra débil hasta que consideres lo que mide. Un encabezado con cualquier valor en absoluto es evidencia de que un humano una vez abrió una configuración de servidor, una regla CDN, o un archivo middleware y escribió una directiva. La comprobación es una prueba de si la capa de configuración de un sitio alguna vez ha sido tocada con intención — por eso las tasas de fallo son la parte interesante, no las tasas de aprobación.
La severidad se asigna por encabezado en lugar de uniformemente. Strict-Transport-Security y Content-Security-Policy fallan con alta severidad. X-Frame-Options, X-Content-Type-Options, Referrer-Policy y Permissions-Policy fallan a nivel medio. La aislación entre orígenes, el par COOP y COEP, es solo informativa — pasa cuando cualquiera de los encabezados está presente y, de lo contrario, informa un veredicto informativo, nunca un fallo, porque esos encabezados controlan las capacidades avanzadas del navegador en lugar de las defensas básicas.
Dos comportamientos valen la pena conocer antes de leer tu propio informe:
- Report-only CSP no satisface la comprobación CSP. El motor revisa específicamente
Content-Security-Policy. Un sitio que solo ejecutaContent-Security-Policy-Report-Onlyfalla la comprobación de aplicación y recibe un veredicto informativo separado que indica que las violaciones se registran pero no se bloquean. Ese veredicto solo existe cuando uno de los dos encabezados CSP está presente. frame-ancestorsno satisface la comprobación X-Frame-Options. El motor lee el encabezadoX-Frame-Optionspor sí mismo. Un CSP moderno con una directivaframe-ancestorses el mejor control, y un sitio que lo envía mientras elimina el encabezado heredado seguirá viendo que esa comprobación falle.
También hay una acomodación de plataforma en el código. Cuando la respuesta proviene de Vercel y la página carga el script BotID de Vercel, una CSP faltante sigue fallando, pero con una severidad media en lugar de alta, con una nota que explica que BotID necesita permisos de script en línea que compiten con la aplicación estricta de CSP. Un sitio puede documentar la restricción deliberadamente colocando un comentario HTML como <!-- seoreport-ignore: vercel-botid-csp --> en los primeros 1 KB de la página de inicio; cuando el nombre de la razón sea CSP o BotID, la verificación pasa a un veredicto informativo en lugar de un fallo. Este es el único escape en la familia, y existe porque una restricción real de la plataforma no debe leerse como negligencia.
La adopción indica cuán antigua es una cabecera, no cuán difícil es.
El orden de las tasas de fallo está casi al revés cronológicamente. HSTS, la más antigua de las 6 y reducible a un interruptor en cada panel principal CDN, es la mejor adoptada. X-Content-Type-Options y X-Frame-Options, ambas convenciones de proveedores que preceden a sus sucesores formales, se sitúan en el medio. Referrer-Policy y Permissions-Policy, las dos más nuevas, son las dos más faltantes — y Permissions-Policy, que ningún host común establece en tu nombre, es la última. Ninguna de ellas es más difícil que las demás en términos de ingeniería. 5 de las 6 son una línea estática en un bloque de servidor, una regla CDN o un archivo de middleware de borde, sin cambios de aplicación y sin riesgo de comportamiento. Lo que las separa es cuánto tiempo han tenido que acumular valores por defecto y cuántas publicaciones de blog, listas de verificación y plantillas de framework las han absorbido. Vimos la misma forma cuando clasificamos cada verificación fallida en nuestro historial de auditoría: las cabeceras de respuesta dominaron la parte superior de la lista, por encima de la canonización, el renderizado y el rendimiento. Esa clasificación cubrió una ventana diferente, una muestra diferente y un conjunto de verificaciones anterior, por lo que los dos conjuntos de porcentajes no son una línea de tendencia — pero la posición de las cabeceras en la parte superior de ambos es el hallazgo duradero. La otra razón estructural es la invisibilidad. Una cabecera faltante no cambia nada en la pantalla. Ningún CMS te advierte, ningún build falla, ningún panel se vuelve rojo. La ausencia solo es observable para algo que inspecciona respuestas crudas — lo cual es exactamente lo que hace una auditoría, el estado de seguridad de un navegador y una creciente proporción de lectores automatizados. Es la misma asimetría que encontramos en render parity: lo que los humanos ven en un navegador y lo que las máquinas reciben sobre HTTP se han divergido silenciosamente.
Qué protege cada cabecera
Strict-Transport-Security indica al navegador que rechace el HTTP en texto plano para tu dominio durante un período declarado, lo que cierra la ventana de redirección que un atacante en la red puede secuestrar antes de que se active tu redirección http:// → https:// También es el único encabezado de la lista que lleva un compromiso: los navegadores honran el max-age incluso si luego rompes el HTTPS. Comienza corto, confirma que cada subdominio y recurso se sirvan limpiamente sobre TLS, luego amplía.
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Security-Policy limita de dónde pueden provenir scripts, estilos, marcos y conexiones. Es el único encabezado aquí que contiene un incidente en lugar de prevenir una categoría de uno: cuando un gestor de etiquetas se ve comprometido o la entrada del usuario llega al DOM, CSP decide si el script inyectado puede ejecutarse o alcanzar un servidor que elija. También es el único que puede romper una página funcional, por eso pertenece al final de la secuencia a continuación.
Content-Security-Policy-Report-Only: default-src 'self'
X-Frame-Options declara si otros orígenes pueden colocar tus páginas en un marco. Sin él, tu interfaz puede ser incrustada bajo una superposición transparente en la página de un atacante y ser clickeada por usuarios que creen que están en tu sitio. La CSP moderna expresa esto mejor con frame-ancestors; envía ambos, ya que el encabezado heredado es lo que leen los clientes antiguos y nuestra propia verificación.
X-Frame-Options: DENY
X-Content-Type-Options evita que los navegadores adivinen el tipo de respuesta cuando el Content-Type declarado se ve incorrecto. El sniffing es cómo un archivo subido que sirves como texto puede ejecutarse como un script en su lugar. El encabezado tiene exactamente 1 valor válido.
X-Content-Type-Options: nosniff
Referrer-Policy regula cuánto del actual URL viaja a terceros en clics salientes y cargas de subrecursos. Tus URLs llevan parámetros de campaña, consultas de búsqueda internas, identificadores de cuenta y a veces tokens, y cada píxel de análisis y fuente CDN en la página es un destinatario. Los principales navegadores han convergido en un valor predeterminado razonable, pero un valor predeterminado es una decisión que el agente de usuario toma por ti y varía según el cliente; enviar el encabezado hace explícita tu política y permite que un sitio que maneja URLs sensibles elija algo más estricto, como same-origin.
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy decide qué capacidades del navegador puede solicitar tu documento y sus marcos embebidos — cámara, micrófono, geolocalización y el resto de la lista de funciones potentes. Sin el encabezado, todo lo que no deshabilitaste está disponible para cada script en la página, incluidos los tags de terceros que no escribiste. Niega lo que no usas.
Permissions-Policy: camera=(), microphone=(), geolocation=()
Envía primero los 4 one-liners, luego pasa una tarde en CSP
La severidad del motor y el riesgo de despliegue no están de acuerdo sobre exactamente 1 encabezado, y el orden de corrección resuelve la discrepancia a favor de enviar.
Despliegue 1 — HSTS, breve. Mayor gravedad, y riesgo casi nulo cuando tu sitio ya sirve HTTPS en todas partes. Establecer un max-age modesto primero para que un problema TLS en un subdominio olvidado sea recuperable.
Despliegue 2 — las 4 líneas de gravedad media juntas. nosniff, Referrer-Policy, Permissions-Policy y X-Frame-Options son valores estáticos sin dependencia de aplicación. Son 4 de las comprobaciones 6 y, con estas tasas de fallo, la mayoría de lo que un sitio promedio está perdiendo. No hay razón para separarlos por etapas.
Luego ampliar HSTS, una vez que hayas confirmado que cada host bajo el dominio sirve correctamente sobre TLS.
Último — CSP, en modo solo-reporte. Desplegar Content-Security-Policy-Report-Only, recopilar violaciones del tráfico real y enumerar las fuentes de script y conexión de las que realmente dependes. Solo entonces cambia el encabezado a forzante y añade frame-ancestors junto a tu línea X-Frame-Options. Mayor gravedad, mayor esfuerzo, último en la secuencia, porque es el único elemento de la lista que puede derribar una página funcional.
Lee tus propios encabezados en el comando 1
Toda la medición es reproducible desde un terminal. Sigue las redirecciones, porque eso es lo que hace el motor:
curl -sSL -o /dev/null -D - https://example.com/ \| grep -iE 'strict-transport-security|content-security-policy|x-frame-options|x-content-type-options|referrer-policy|permissions-policy'
Cada línea que no regresa es una comprobación de que tu página principal falla. Todas las 6 que regresan significa que la barra de presencia está limpia y la siguiente pregunta — si las políticas en sí son buenas — vale la pena hacerla. Nuestro informe gratuito ejecuta la misma lectura en cada auditoría y lista cada encabezado ausente con el valor que lo resuelve. Los encabezados en este conjunto de datos no faltan porque son difíciles o controvertidos. Faltan porque nada en la vida ordinaria de un sitio web jamás muestra su ausencia: sin error, sin cambio visual, sin compilación fallida. Los sitios que pasan son los que alguna vez alguien buscó — y ese único despliegue sigue disponible para la mayoría que no lo tiene.
Ver cómo se clasifica tu sitio
Get a free IA-powered SEO report with actionable findings and priority fixes for your website.
Sin registro obligatorio.