Por qué las cabeceras faltan o siguen siendo débiles
- Las configuraciones de hosting predeterminadas no incluyen ninguna de ellas. La mayoría de los servidores web y plataformas no añaden cabeceras de seguridad a menos que las configure explícitamente.
- Se añade una CSP una vez y nunca se revisa de nuevo. A medida que una aplicación añade nuevos scripts de terceros, contenido incrustado o fuentes, una CSP estática escrita hace un año los bloquea silenciosamente, o peor, alguien la amplía con un comodín para que dejen de aparecer los errores, anulando la política.
- Se añade HSTS sin las directivas que lo hacen realmente efectivo. Una cabecera
Strict-Transport-Securitydesnuda con unmax-agecorto y sinincludeSubDomainsnipreloadofrece una protección mucho más débil de lo que aparenta. - Persisten cabeceras obsoletas copiadas de un tutorial antiguo, como
X-XSS-Protection, que los navegadores modernos ignoran o que puede en sí misma introducir riesgo.
Cómo identificar el problema
Esta es la capacidad de seguridad más profunda de Scanverra. El escáner de seguridad realiza un análisis real de las directivas de CSP, verificando específicamente base-uri, form-action, object-src y frame-ancestors, además de detectar orígenes comodín demasiado amplios, y una verificación completa de profundidad de HSTS que cubre max-age, includeSubDomains y preload. Para la directiva preload en particular, hace una llamada en vivo a la API de hstspreload.org para confirmar que su dominio realmente está en la lista de precarga de Chrome, no solo que lo afirma. También señala cabeceras obsoletas como X-XSS-Protection, y asocia cada hallazgo a una referencia CWE y OWASP Top 10; por ejemplo, una cabecera HSTS faltante se asocia a CWE-319 y OWASP A05:2021, de modo que los hallazgos se traducen directamente en documentación de cumplimiento.
Cómo solucionarlo
1. Añada HSTS con el conjunto completo de directivas
1Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadDespués de añadir preload, envíe su dominio en hstspreload.org: la directiva por sí sola no lo inscribe, y la verificación en vivo de Scanverra seguirá señalando el vacío hasta que el envío realmente sea aceptado.
2. Escriba una Content-Security-Policy delimitada a lo que su sitio realmente carga
1Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self'; object-src 'none'; frame-ancestors 'self'Añada orígenes de confianza específicos a script-src/style-src solo según sea necesario; nunca recurra a un comodín (*) o a un origen solo de esquema (https:) simplemente para silenciar errores de consola, ya que eso anula por completo el propósito de la política.
3. Añada las cabeceras estándar restantes
1X-Content-Type-Options: nosniff
2X-Frame-Options: DENY
3Referrer-Policy: strict-origin-when-cross-originframe-ancestors en su CSP es el reemplazo moderno de X-Frame-Options y es más flexible: envíe ambas, ya que los navegadores más antiguos solo respetan la cabecera heredada.
4. Elimine las cabeceras obsoletas en lugar de dejarlas en su sitio
X-XSS-Protection está obsoleta y OWASP recomienda explícitamente eliminarla por completo en lugar de fijarla a cualquier valor: una CSP real es el reemplazo moderno, no un complemento a ella.
Cómo detecta Scanverra este problema
El escáner de seguridad de Scanverra lee sus cabeceras de respuesta en vivo y realiza un análisis genuino a nivel de directiva, no una simple verificación de presencia: cobertura de directivas de CSP y detección de comodines, profundidad del valor de HSTS incluyendo una consulta en vivo a hstspreload.org, y detección de cabeceras obsoletas, con cada hallazgo asociado a referencias CWE, OWASP y PCI cuando corresponde.