La BBC déploie actuellement le mécanisme HSTS sur son site Web afin d'améliorer la sécurité et les performances. Découvrez ce que cela signifie et comment le mécanisme HSTS peut vous aider.
L'adoption du protocole HTTPS n'a cessé d'augmenter ces dernières années. D'après l'almanach Web publié en 2021 par les archives HTTP, environ 91% de toutes les requêtes effectuées sur ordinateur et sur mobile ont été traitées via HTTPS. Le protocole HTTPS n'est pas seulement là pour durer. C'est un prérequis nécessaire pour utiliser des fonctionnalités telles que Service Worker et des protocoles modernes tels que HTTP/2 et HTTP/3.
Récemment, Neil Craig, architecte technique principal à la BBC, a tweeté que le protocole HSTS (HTTP Strict Transport Security) était progressivement déployé sur bbc.com. Découvrez ce que cela signifie pour la BBC et ce que cela pourrait signifier pour vous.
Problème
Les serveurs Web écoutent souvent les requêtes sur les ports 80 et 443. Le port 80 est destiné aux requêtes HTTP non sécurisées, tandis que le port 443 est destiné aux requêtes HTTPS sécurisées. Cela peut poser un problème. En effet, lorsque vous saisissez une adresse dans la barre d'adresse sans le préfixe de protocole https://
, comme c'est le cas pour la plupart des utilisateurs, certains navigateurs dirigent le trafic vers la version HTTP non sécurisée d'un site, pour des raisons héritées (bien que ce ne soit pas toujours le cas).
Une méthode courante pour s'assurer que les utilisateurs n'accèdent pas à une version non sécurisée d'un site Web consiste à placer une redirection HTTP vers HTTPS pour toutes les requêtes. Cela fonctionne certes, mais cela déclenche la chaîne d'événements suivante:
- Le serveur reçoit une requête HTTP.
- Le serveur émet une redirection pour accéder à l'équivalent HTTPS de la ressource demandée.
- Le serveur doit négocier une connexion sécurisée avec le navigateur.
- Le contenu se charge comme d'habitude.
Bien que les redirections fonctionnent correctement, elles peuvent être mal configurées et permettre d'accéder à la version non sécurisée d'un site. Même si tout est correctement configuré, un problème de sécurité persiste : l'utilisateur se connectera toujours via un protocole HTTP non sécurisé pendant la phase de redirection, ce qui expose les utilisateurs à des attaques MITM ("man in the middle") dangereuses.
Saisir HSTS
Le mécanisme HSTS est dicté par l'en-tête de réponse HTTP Strict-Transport-Security
pour les requêtes HTTPS. Lorsque cette option est définie, les visites de retour sur un site Web déclenchent une redirection spéciale appelée "redirection interne 307", c'est-à-dire lorsque le navigateur gère la logique de redirection, et non le serveur. Cela évite que la requête ne soit interceptée, car elle ne quitte jamais le navigateur et est donc plus sécurisée. De plus, ces types de redirection sont extrêmement rapides, de sorte que toute latence notable lors d'un saut du HTTP vers HTTPS est éliminée.
![Redirection interne 307 de HTTP vers HTTPS, déclenchée par un en-tête HSTS. La redirection 307 ne prend que 2 millisecondes.](https://web.dev/static/blog/bbc-hsts/image/a-307-internal-redirect-cd7d384b0a833.png?authuser=6&hl=fr)
Comme pour la directive max-age
de Cache-Control
, un en-tête HSTS spécifie une instruction max-age
. Cette directive prend une valeur en secondes qui indique pendant combien de temps la règle est appliquée:
Strict-Transport-Security: max-age=3600
Dans l'exemple précédent, la règle ne devrait prendre effet que pendant une heure.
Déployer HSTS
Le principal inconvénient du déploiement de HSTS est que vous n'êtes pas prêt à traiter votre origine comme étant strictement sécurisée. Supposons que vous ayez plusieurs sous-domaines à partir desquels vous diffusez des ressources, mais que certains ne soient peut-être pas sécurisés. Dans ce scénario, un en-tête HSTS risque d'endommager votre site Web.
La BBC a adopté la bonne approche pour déployer le mécanisme HSTS. Comme Neil Craig l'a mentionné dans son tweet, la valeur initiale définie pour bbc.com était max-age=10
.
Avec cette approche, la règle n'a été appliquée initialement que pendant 10 secondes. Cela n'apporte pas beaucoup d'avantages, mais l'idée est de déterminer s'il y a des problèmes avec l'application HSTS. Au fil du temps, vous pouvez augmenter les règles progressivement et voir si des problèmes surviennent. Au moment de la rédaction de ce document, bbc.com spécifie une règle HSTS de max-age=86400
, et ce nombre augmentera très certainement au fil du temps.
Il est déconseillé de sortir de la porte avec une longue valeur max-age
lors du déploiement de HSTS. Vous pourriez vous retrouver soudainement avoir du mal à résoudre des problèmes pendant que les utilisateurs rencontrent des problèmes. Commencez petit et petit à petit ! Lorsque vous êtes sûr que tout va bien, vous pouvez définir votre directive max-age
sur une période beaucoup plus longue. Nous vous recommandons de définir max-age
sur un ou deux ans lorsqu'il est entièrement déployé.
Bénéficiez de navigations initiales plus sûres et plus rapides grâce à la liste de préchargement HSTS
Une règle HSTS ne prend effet qu'après la première visite sur un site Web. Par conséquent, les avantages ne sont pas présents lors de la première visite sur le site. Dans ce cas, la redirection non sécurisée sera toujours nécessaire. Toutefois, vous pouvez précharger votre règle HSTS en envoyant votre site Web à la liste de préchargement HSTS, qui est une liste codée en dur de sites Web dont le navigateur considère que le protocole HTTPS est strictement HTTPS. Lorsque votre site figure sur la liste de préchargement, la première visite est également protégée et la redirection HTTP vers HTTPS est instantanée.
Essayez par vous-même
Si la BBC estime de pouvoir tester le mécanisme HSTS, vous pouvez très probablement faire de même pour votre site Web. Essayez de l'appliquer à votre site Web. Si vous souhaitez l'améliorer, ajoutez-le à la liste de préchargement HSTS lorsque vous êtes certain qu'il n'y a aucun bug afin d'offrir une expérience plus sûre et plus rapide à vos utilisateurs.