HSTS (HTTP Strict Transport Security) est un mécanisme de sécurité qui a été développé pour protéger les connexions HTTPS contre les attaques de l’homme du milieu et les détournements de sessions (hijacking). Grâce à l’extension HTTPS, les opérateurs de sites Web peuvent signaler aux navigateurs Web les informations d’en-tête HTTP optionnelles qui permettent à un site d’être récupéré sous forme chiffrée SSL/TLS pour une période de temps définie. Côté serveur, le champ d’en-tête Strict Transport Security est utilisé. Il contient la directive obligatoire max-age et peut être étendu avec les directives optionnelles includeSubDomains et preload :
Strict-Transport-Security: max-age=31536000
La directive max-agespécifie la durée pendant laquelle un site web doit être uniquement disponible sous forme chiffrée. La période de temps est alors définie en secondes, ainsi un max-age de 31.536.000secondes correspond à une période d’un an.
Lorsqu’un internaute visite pour la première fois un site Web sécurisé par le HSTS, le navigateur reçoit alors les instructions suivantes dans le champ d’en-tête Strict Transport Security :
- Tous les liens non chiffrés vers le site Web respectif doivent être réécrits en liens chiffrés (http:// en https://).
- Si la sécurité de la connexion ne peut pas être garantie (par exemple à cause d’un certificat invalide), elle doit être résiliée. L’utilisateur reçoit alors un message d’erreur.
En option, les informations HSTS peuvent être étendues aux sous-domaines. Dans ce cas, l’en-tête Strict Transport Security est complété de la directive includeSubDomains. Ceci indique au navigateur que l’en-tête HSTS ne s’applique pas seulement l’hôte courant (par exemple www.example.com) mais aussi à tous les sous-domaines dans le domaine spécifié (par exemple aussi pour blog.example.com ou adserver.example.com).
Strict-Transport-Security: max-age=31536000; includeSubDomains
La directive preload vous permet de marquer les pages Web pour ce que le nomme le pré-chargement, et éviter ainsi le problème de la première visite.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Sans le paramètre preload, HSTS n’affectera que les visites futures du site Web : si un navigateur connait les informations contenues dans l’en-tête HSTS d’un site Web, alors les appels suivants sont mis en œuvre en conséquence. Ce mécanisme de sécurité ne s’applique pas à la première visite du site. Les éditeurs de navigateurs comme Google et Mozilla offrent donc la possibilité d’introduire des pages Web dans des listes de pré-chargement (preload lists). Les sites Web enregistrés pour le pré-chargement ne sont accessibles que via HTTPS. Les listes « précharge » sont gérées de manière centralisée par les développeurs de navigateur et sont transmises aux navigateurs utilisateurs par le biais de mises à jour.