Saltar a contenido

Insecure HTTP Header Setting: HTTP Strict Transport Security (HSTS)

Configuración de cabecera HTTP insegura: HTTP Strict Transport Security (HSTS)

Descripción

HTTP Strict Transport Security (HSTS) es un mecanismo de política de seguridad web mediante el cual un servidor web declara que los agentes de usuario que lo admitan (como un navegador web) deben interactuar con él utilizando únicamente conexiones seguras (HTTPS). El servidor comunica la política HSTS al agente de usuario a través de un campo de cabecera de respuesta HTTP denominado "Strict-Transport-Security". La política HSTS especifica un período durante el cual el agente de usuario debe acceder al servidor únicamente de forma segura.

Cuando una aplicación web emite una política HSTS a los agentes de usuario, los agentes de usuario conformes se comportan de la siguiente manera:

  • Convierten automáticamente cualquier enlace inseguro (HTTP) que haga referencia a la aplicación web en enlaces seguros (HTTPS). (Por ejemplo, http://example.com/some/page/ se modificará a https://example.com/some/page/ antes de acceder al servidor).
  • Si no se puede garantizar la seguridad de la conexión (por ejemplo, el certificado TLS del servidor es autofirmado), los agentes de usuario muestran un mensaje de error y no permiten al usuario acceder a la aplicación web.

Recomendación

Configure su servidor web para redirigir las solicitudes HTTP a HTTPS.

Por ejemplo, para Apache, debe realizar modificaciones en el archivo httpd.conf. Para obtener más configuraciones, consulte la sección de Referencias externas.

# Cargar módulo
LoadModule headers_module modules/mod_headers.so

# Redirigir todo el HTTP a HTTPS (opcional)
<VirtualHost *:80>
       ServerAlias *
       RewriteEngine On
       RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>

# Configuración de Host HTTPS
<VirtualHost *:443>
      # Usar HTTP Strict Transport Security para obligar al cliente a usar solo conexiones seguras
      Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

      # Más configuraciones aquí
      [...]
</VirtualHost>

Enlaces

Estándares

  • OWASP_ASVS_L1:
    • V14_4_5
  • OWASP_ASVS_L2:
    • V14_4_5
  • OWASP_ASVS_L3:
    • V14_4_5
  • PCI_STANDARDS:
    • REQ_2_2
    • REQ_3_6
    • REQ_3_7
    • REQ_4_2
    • REQ_6_2
    • REQ_6_3
    • REQ_6_4
    • REQ_11_3
  • HIPAA_CONTROLS:
    • SECURITY252
    • SECURITY212
    • SECURITY213