Comment la BBC déploie-t-elle le mécanisme HSTS pour améliorer la sécurité et les performances ?

La BBC déploie le mécanisme HSTS sur son site Web afin d'améliorer la sécurité et les performances. Découvrez ce que le système HSTS peut vous apporter et comment il peut vous aider.

L'adoption du protocole HTTPS n'a cessé d'augmenter ces dernières années. Selon l'almanac Web de 2021 publié par les archives HTTP en 2021, environ 91% de toutes les requêtes sur ordinateur et sur mobile ont été traitées via HTTPS. HTTPS n'est pas seulement là pour durer. Il s'agit d'une condition préalable indispensable pour utiliser des fonctionnalités telles que Service Worker et des protocoles modernes comme HTTP/2 et HTTP/3.

Récemment, Neil Craig, architecte technique en chef à la BBC, a tweeté que le protocole HSTS (HTTP Strict Transport Security) soit déployé progressivement pour bbc.com. Découvrons 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 réservé aux requêtes HTTP non sécurisées, tandis que le port 443 correspond au protocole HTTPS sécurisé. Cela peut poser problème, car lorsque vous saisissez une adresse sans le préfixe de protocole https:// dans la barre d'adresse, comme c'est généralement le cas pour la plupart des utilisateurs, certains navigateurs dirigent le trafic vers la version HTTP non sécurisée d'un site, et ce pour des raisons anciennes (bien que cela 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 certainement, mais cela déclenche la chaîne d'événements suivante:

  1. Le serveur reçoit une requête via HTTP.
  2. Le serveur émet une redirection pour accéder à l'équivalent HTTPS de la ressource demandée.
  3. Le serveur via HTTPS doit négocier une connexion sécurisée avec le navigateur.
  4. Le contenu se charge normalement.

Bien que les redirections fonctionnent correctement, elles peuvent être mal configurées et permettre tout de même 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 connecte quand même via un protocole HTTP non sécurisé pendant la phase de redirection, ce qui expose les utilisateurs au risque de dangereuses attaques MITM ("man in the middle").

Saisir le mécanisme HSTS

Navigateurs pris en charge

  • 4
  • 12
  • 4
  • 7

Source

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 règle est définie, les visites répétées 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 plutôt que le serveur. La requête est ainsi plus sécurisée, car elle ne quitte jamais le navigateur et ne peut donc pas être interceptée. En outre, ces types de redirection sont extrêmement rapides, ce qui élimine toute latence notable lors d'un saut HTTP vers HTTPS.

Redirection interne 307 de HTTP vers HTTPS, déclenchée par un en-tête HSTS. La redirection 307 ne prend que deux millisecondes.

Semblable à la syntaxe de la directive max-age de Cache-Control, un en-tête HSTS spécifie une instruction max-age. Cette directive utilise une valeur en secondes qui indique la durée d'application de la règle:

Strict-Transport-Security: max-age=3600

Dans l'exemple ci-dessus, la règle ne devrait prendre effet qu'une heure.

Déployer le mécanisme HSTS

Le principal inconvénient du déploiement du mécanisme HSTS est que vous n'êtes pas prêt à traiter votre origine comme étant strictement sécurisée. Supposons que vous diffusez des ressources depuis un certain nombre de sous-domaines, mais qu'ils ne soient peut-être pas tous sécurisés. Dans ce scénario, un en-tête HSTS risque de dysfonctionnement de 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 que pendant 10 secondes au départ. Cette approche présente peu d'intérêt, mais elle consiste à déterminer si l'application de la technologie HSTS peut présenter des problèmes. Au fil du temps, vous pouvez augmenter la règle progressivement et voir si des problèmes surviennent. Au moment de la rédaction de ce document, le site bbc.com spécifie une règle HSTS de max-age=86400, ce qui devrait augmenter au fil du temps.

Lorsque vous déployez le mécanisme HSTS, vous ne souhaitez certainement pas utiliser une valeur max-age longue. Vous pourriez vous retrouver soudainement à vous dépêcher de résoudre les problèmes pendant que les utilisateurs rencontrent des problèmes. Commencez petit et incrémentez au fil du temps. Lorsque vous êtes certain que tout va bien, vous pouvez définir votre instruction max-age sur une période beaucoup plus longue. Une fois le déploiement complet, nous vous recommandons de définir max-age sur un ou deux ans.

Bénéficiez d'une navigation initiale plus rapide et sécurisée grâce à la liste de préchargement HSTS

Les règles HSTS ne prennent effet qu'après la première visite sur un site Web. Les avantages ne sont donc pas disponibles lors de la première visite sur le site. Cela nécessitera toujours la redirection non sécurisée. Toutefois, vous pouvez précharger vos règles HSTS en envoyant votre site Web à la liste de préchargement HSTS, qui est une liste codée en dur de sites Web que le navigateur considère uniquement comme HTTPS. Lorsque votre site figure dans la liste de préchargement, la première visite est également protégée, et la latence de redirection HTTP vers HTTPS via le mécanisme HSTS est instantanée.

Essayez par vous-même

Si la BBC se sent à l'aise pour tester le mécanisme HSTS, vous pouvez probablement en faire autant pour votre site Web. Testez-le pour votre site Web. Si vous souhaitez le booster, ajoutez-le à la liste de préchargement HSTS lorsque vous êtes certain qu'il n'y a pas de bugs afin d'offrir à vos utilisateurs une expérience plus sûre et plus rapide.