Usa una política de HSTS sólida

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

Advertencia de la auditoría de Lighthouse que indica que no se encontró ningún encabezado de respuesta de HSTS.
El informe de Lighthouse advierte que no se encontró ningún encabezado de respuesta de HSTS.

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 directiva includeSubDomains, 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:

  1. Comienza con un max-age pequeño y solo agrega includeSubDomains (sin preload):

    max-age=3600; includeSubDomains
    
  2. 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
    
  3. 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