Los protocolos de texto simple, como HTTP, pueden ser vulnerables a ataques de escucha en los que un atacante puede leer el contenido transmitido. Por suerte, la seguridad de la capa de transporte (TLS) puede encriptar el tráfico y dificultar mucho que los atacantes usen estos datos si se capturan.
Sin embargo, los atacantes pueden eludir TLS forzando a las conexiones encriptadas a usar HTTP de texto sin formato. Para abordar este problema, se introdujo el encabezado de respuesta de Seguridad de transporte estricta HTTP (HSTS), que obliga al navegador del usuario a visitar un sitio web solo con TLS y no recurrir al texto simple HTTP (por un tiempo determinado).
Cómo falla la auditoría de Lighthouse
La auditoría marcará los siguientes problemas con el encabezado HSTS:
- Si no se encuentra ningún encabezado HSTS.
- Si falta una de las directivas recomendadas (
max-age
,includedSubDomains
,preload
) - Si la duración de la directiva
max-age
es inferior a un año (31,536,000 segundos). - Si hay un error de sintaxis cuando se analiza el encabezado, como una directiva desconocida.
Configura una política de HSTS sólida
La configuración óptima del encabezado HSTS se ve de la siguiente manera:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
- La directiva
max-age
especifica la cantidad de tiempo que el navegador del usuario se ve obligado a visitar un sitio web solo con TLS (en segundos). Después de ese tiempo, será posible volver a acceder al sitio con HTTP sin formato si el sitio web no proporciona un encabezado HSTS (o si hay redireccionamientos temporales de HTTP a HTTPS). - Si estableces la directiva
includeSubDomains
, se aplicará el encabezado a cualquier subdominio de la URL de la página que envíe el encabezado inicialmente. Por ejemplo, si google.com envía un encabezado HSTS que incluye la directivaincludeSubDomains
, también se aplicará el encabezado HSTS en mail.google.com. - Si estableces la directiva
preload
y envías el dominio al servicio de precarga de HSTS, se compilará el dominio en objetos binarios del navegador que usan la lista de HSTS precargada (no solo Google Chrome).
Existen algunos riesgos cuando se implementa el encabezado HSTS. Todas las funciones que requieran una conexión HTTP no encriptada se interrumpirán durante el tiempo establecido en la directiva max-age
. Incluso más si se aplica la directiva preload
.
Para reducir los riesgos asociados con el lanzamiento, se recomienda un enfoque por etapas:
Comienza con un
max-age
pequeño y solo agregaincludeSubDomains
(sinpreload
):max-age=3600; includeSubDomains
Después de un período de inactividad (p.ej., una semana) sin problemas informados, aumenta el valor de
max-age
, por ejemplo:max-age=604800; includeSubDomains
Si esta fase inicial se realiza correctamente durante un período prolongado (p.ej., tres meses), se deben agregar el sitio web y sus subdominios a la lista de carga previa de HSTS y la directiva
preload
.max-age=63072000; includeSubDomains; preload