Qué es HSTS y cómo implementarlo para incrementar la seguridad de mi sitio

Desde que Google anunciara días atrás que subiría el ranking de búsqueda a los sitios que utilicen HTTPS, múltiples han sido las webs que comenzaron a hacer pruebas con el protocolo de transferencia seguro.

En esta edición vamos a trabajar sobre HSTS, una política o mecanismo de seguridad estandarizado que anuncia a los navegadores cuándo una web (y todos sus enlaces) deben ser accedidos exclusivamente utilizando HTTPS.

HSTS significa, por sus siglas en inglés, HTTP Strict Transport Security y sus detalles están especificados en el RFC 6797. Su principal objetivo es impedir que un atacante convierta una conexión HTTPS en HTTP. El mecanismo instruye al UA (user agent o navegador del usuario) a finalizar la conexión con el servidor de destino si ocurre algún error mientras intenta establecer una comunicación segura (SSL/TLS), incluyendo certificados revocados. Además, todos los enlaces de la página se visualizarán como HTTPS inluso si no fueron creados de esa manera.

 

HSTS envía un mensaje al navegador del usuario que podría ser interpretado como: “¡Hola! Toda nuestra comunicación debe ser encriptada, caso contrario tendrás que mostrar un mensaje de error.”

Navegadores soportados

Entre los navegadores que soportan HSTS se encuentran:
  • Google Chrome desde la versión 4.0.211.0.
  • Google Chrome para Android desde la versión 18.
  • Firefox y Firefox Mobile desde la versión 4.
  • Opera desde la versión 12.
  • Safari desde la versión 7.
  • Android Browser desde la versión 4.4 de Android.
  • Internet Explorer planea implementarlo en la versión 12 de su navegador.

Implementando HSTS

La implementación de HSTS es bastante sencilla, y daremos ejemplos para las tres principales plataformas web del mundo.
  • En el caso de Apache, será necesario agregar al archivo .htaccess la siguiente línea

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

  • nginx también soporta la utilización de HSTS, declarando la siguiente línea en el archivo nginx.conf:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

  • Para sitios alojados en IIS, el servicio web de Windows Server, debemos agregar el siguiente fragmento en el archivo web.config del sitio:

<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000"/>
</customHeaders>
</httpProtocol>
</system.webServer>

En todos los casos, el parámetro max-age indica cuánto tiempo (en segundos) el navegador del usuario deberá comunicarse via HTTPS con el servidor de destino. En todos los ejemplos hemos utilizado como período 1 (un) año y el contador se reiniciará cada vez que el usuario vuelva a ingresar al sitio.

Por último, el parámetro includeSubDomains obliga al navegador del usuario a validar que la comunicación sea establecida de manera segura en todos los subdominios del sitio.

De acuerdo con las estadísticas de SSL Pulse, a Agosto de 2014 solo 1649 sitios de un total de 152.733 analizados utilizan HSTS.

¡Hasta la próxima!

1 comentario en “Qué es HSTS y cómo implementarlo para incrementar la seguridad de mi sitio”

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.