Los protocolos de texto sin formato, como HTTP, pueden ser vulnerables a los ataques de interceptación, en los que un atacante puede leer el contenido transmitido. La Seguridad de la capa de transporte (TLS) puede encriptar el tráfico y dificultar significativamente que los atacantes usen estos datos si los capturan.
Sin embargo, es posible que los atacantes eludan TLS forzando las conexiones encriptadas para que usen HTTP de texto sin formato. Para solucionar este problema, puedes usar el encabezado de respuesta HTTP con Seguridad de Transporte Estricta (HSTS). HSTS obliga al navegador del usuario a visitar un sitio web con TLS y no le permite volver a HTTP de texto simple durante un período determinado.
Cómo falla la auditoría de Lighthouse
La auditoría marca los siguientes problemas con el encabezado HSTS:
- Si no se encuentra ningún encabezado HSTS.
- Si falta una de las directivas recomendadas (
max-age,includeSubDomains,preload) - Si la duración de la directiva
max-agees inferior a un año (31,536,000 segundos) - Si hay un error de sintaxis al analizar 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-ageespecifica la cantidad de tiempo que el navegador del usuario se ve obligado a visitar un sitio web solo con TLS (en segundos). Una vez que transcurre el tiempo, los usuarios pueden volver a acceder al sitio con HTTP sin formato si el sitio web no proporciona un encabezado HSTS (o redireccionamientos temporales de HTTP a HTTPS). - Si se establece la directiva
includeSubDomains, se aplica el encabezado en cualquier subdominio de la URL de la página que envía el encabezado inicialmente. Por ejemplo, sigoogle.comenvía un encabezado HSTS que incluye la directivaincludeSubDomains, se aplicará el encabezado HSTS enmail.google.com. - Si configuras la directiva
preloady envías el dominio al servicio de precarga de HSTS, se compilará el dominio en los archivos binarios del navegador que usan la lista de HSTS precargada. Esto se aplica a más que solo Google Chrome.
Existen algunos riesgos al implementar el encabezado HSTS. Cualquier función que requiera una conexión HTTP sin encriptar se interrumpirá durante el tiempo establecido en la directiva max-age. Incluso podría ser más largo si se aplica la directiva preload.
Para reducir los riesgos asociados al lanzamiento, se recomienda un enfoque por etapas:
Comienza con un
max-agepequeño y solo agregaincludeSubDomains(nopreload):max-age=3600; includeSubDomainsDespués de un período de inactividad (por ejemplo, una semana) sin problemas informados, aumenta el valor de
max-age. Por ejemplo:max-age=604800; includeSubDomainsSi esta fase inicial tiene éxito durante un período prolongado (por ejemplo, tres meses), el sitio web y sus subdominios se deben agregar a la lista de precarga de HSTS y se debe agregar la directiva
preload.max-age=63072000; includeSubDomains; preload