---
title: "Seguridad web: HSTS"
description: Mejora la seguridad de tu sitio web con la directiva HSTS, evitando el tráfico de datos por medios inseguros.
url: https://www.felixsanz.dev/es/articulos/seguridad-web-hsts
language: es
published: 2017-10-05
updated: 2017-10-05
tags:
  - security
alternate-en: https://www.felixsanz.dev/articles/web-security-hsts
---

# Seguridad web: HSTS

## Introducción

HTTP con Seguridad de Transporte Estricta o **HSTS** (*HTTP Strict Transport Security* - [RFC 6797](https://tools.ietf.org/html/rfc6797)), es una política de seguridad diseñada para impedir que los visitantes de nuestro sitio web sean capaces de acceder **de manera insegura** a través del protocolo HTTP.

Cuando el servidor web hace uso de esta política, todos los visitantes que intenten acceder a través del protocolo HTTP serán redirigidos a la versión HTTPS. De ahí viene lo de **estricta**.

## Habilitar HSTS

Esta directiva se habilita en el servidor, añadiendo una **cabecera HTTP** (HTTP header) a la respuesta. Cuando un visitante acceda por primera vez al sitio web a través del protocolo HTTPS, el navegador recordará esta cabecera por un tiempo definido por el servidor.

> [!NOTE]
> **HTTP -> HTTPS**
> Si el visitante nunca ha accedido a través de HTTPS y siempre lo hace mediante HTTP, esta cabecera todavía no tendría utilidad puesto que su funcionamiento **comienza en la primera visita a través del protocolo HTTPS**. Asegúrate de redirigir las peticiones HTTP a la versión HTTPS para hacer uso de la cabecera y así los navegadores recordarán la directiva en futuros accesos.

La cabecera en cuestión es `Strict-Transport-Security` y acepta tres parámetros: `max-age`, `includeSubDomains` y `preload`, siendo el primero de ellos obligatorio.

```
Strict-Transport-Security: max-age=31536000
Strict-Transport-Security: max-age=31536000; includeSubDomains
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
```

El parámetro `max-age` indica (en segundos) la cantidad de tiempo que el navegador debe **recordar** esta característica. Para conseguir una calificación de A+ en el test de seguridad ofrecido por [Qualys SSL Labs](https://www.ssllabs.com/ssltest/), el valor de `max-age` debe ser de al menos 6 meses.

El parámetro opcional `includeSubDomains` hace que esta política también afecte a todos los subdominios (recomendado).

Por último, el parámetro opcional `preload` valida una petición de precarga. Este parámetro es necesario cuando demos de alta nuestro dominio en las listas de precarga de HSTS, algo que veremos más abajo.

## Deshabilitar HSTS

Para deshabilitar esta política basta con modificar el valor de `max-age` a `max-age=0`. La cabecera debe estar presente un tiempo para que los visitantes puedan recibir este nuevo valor y proceder al olvido de esta directiva de seguridad.

## Precarga

Google creó hace un tiempo una **lista de precarga de HSTS** donde el administrador de un sitio web puede incluir su dominio. Esta lista se distribuye dentro del navegador Google Chrome. Otros [navegadores](https://caniuse.com/#feat=stricttransportsecurity) como Firefox, Opera, Safari, IE11 y Edge también tienen sus listas de precarga basadas en este proyecto, por lo que la inclusión de un dominio en el proyecto de Google será suficiente para precargar el dominio en todos los demás navegadores compatibles.

Para dar de alta un dominio en la lista de precarga de HSTS sigue las instrucciones que aparecen en el sitio web [hstspreload.org](https://hstspreload.org/).

> [!WARNING]
> **No mires atrás**
> Recuerda que una vez hayas incluído tu dominio en las listas de precarga será un poco más complicado volver atrás en la decisión y tu dominio **únicamente será accesible a través de HTTPS**.

Ya que el navegador web **conocerá con antelación** el estado de la directiva HSTS de un dominio, y puesto que será imposible conectar a través de HTTP debido a esto, el requerimiento de que un usuario necesitará conectar por primera vez a través del protocolo HTTPS para recibir la cabecera queda subsanado, puesto que el navegador realmente ya no necesita consultar la cabecera.

A pesar de que estas aclaraciones puedan parecer una restricción, habilitar la cabecera HSTS y la precarga de esta directiva es un **punto a favor** que añadirá protección al flujo de datos.
