Recourir au HSTS lors du déploiement du protocole HTTPs

Une solution miracle ?

18 novembre 2018
Les précautions indispensables à prendre en cas de mise en œuvre du protocole HTTPs sur un site, vis à vis des outils de collecte de données, ont déjà été exposées dans un précédent article. Cependant, n'y était pas présentée une politique de sécurité Web, baptisée HTTP Strict Transport Security, qui peut grandement faciliter le travail des équipes mobilisées afin de rendre la communication des ressources constitutives d'un site Web totalement sécurisée. Peut-on pour autant qualifier, le HSTS, de solution miracle aux différents problèmes soulevés par une migration vers le protocole HTTPs ?

Principe de fonctionnement du HSTS

Le HSTS est une directive de sécurité définie par un serveur, à tout client cherchant à établir une connexion avec lui de façon sécurisée ou non sécurisée, dans l'en-tête de la réponse à la toute première requête émise. Cette instruction ne pouvant être transmise qu'au sein d'une réponse communiquée en HTTPs, son usage se limite de facto aux navigateurs supportant ce protocole. Une durée de vie est systématiquement associée à la directive, la rendant de fait inopérante après un certain laps de temps.

La finalité du HSTS est de forcer tout navigateur auquel elle aurait été transmise, à établir des connexions avec le serveur, exclusivement en utilisant le protocole HTTPs. Il s'agit donc d'un complément idéal à une règle de redirection générale, qui serait paramétrée au niveau des fichiers de configuration du serveur, ou au sein d'un fichier htaccess et qui viserait à rediriger l'ensemble des utilisateurs d'un dispositif Web vers sa version sécurisée.

HSTS et optimisation de la performance

Ces deux approches distinctes, redirection serveur d'une part et HSTS d'autre part, répondent à une même problématique, mais de façon différente. Dans le premier cas, le serveur est en charge de rediriger l'utilisateur vers une version sécurisée de la ressource demandée, tandis que dans le second cas, la demande de téléchargement d'une ressource de façon sécurisée est directement gérée par le navigateur. Les deux fonctionnalités ne font donc pas doublon.

Le HSTS est indubitablement le grand gagnant, du strict point de vue de l'optimisation de la performance. En effet, le serveur, plutôt qu'avoir à générer une redirection 301 après qu'une ressource ait été appelée au moyen du protocole HTTP en plus d'assurer la livraison de ladite ressource, lorsque le HSTS n'est pas utilisé, pourra se contenter en cas d'activation de cette fonctionnalité, d'envoyer directement de façon sécurisée l'information demandée à son requérant.

Outre une moindre sollicitation des serveurs, le HSTS permet de garantir que les ressources demandées seront plus rapidement téléchargées, car il n'y aura, de fait, plus aucune redirection suite au chargement de la première ressource retournée en HTTPs, avec laquelle la directive HSTS aura été définie. Enfin et c'est probablement le plus fondamental, il n'y aura aucune transmission des données, du client vers le serveur, de façon non sécurisée, contrairement à ce qu'il se serait produit dans le cas où seules des redirections gérées côté serveur auraient été paramétrées.

HSTS et référencement naturel

Quel est l'impact, dans les faits, du HSTS sur le référencement naturel ? Le HSTS permet de réduire les redirections 301 liées à l'envoi d'une ressource en version HTTPs et non HTTP, uniquement à la première ressource transmise à un navigateur, durant le laps de temps où la directive HSTS demeure valide.

Certains navigateurs, comme Google Chrome, associent dans l'onglet réseau des outils pour développeurs, les requêtes sécurisées émises grâce au HSTS au code HTTP 307. Il s'agit d'une convention, permettant d'identifier les requêtes ayant été automatiquement réécrites en HTTPs, avant émission par le navigateur. Cependant, l'information affichée n'est pas représentative du code de réponse envoyé par le serveur, qui sera systématiquement un code 200. La longueur de la réponse associée à cette 307, de 0 byte, est caractéristique de cette redirection 307 factice, qui n'est en réalité qu'un substitut. Certains outils, tels que la Search Console de Google, choisissent d'identifier les appels effectués suite à la réception d'une directive HSTS, comme des 301.

Ainsi, le HSTS est bénéfique du point de vue du référencement naturel, car il permet de garantir qu'aucune ressource ne sera distribuée de façon non sécurisée, évitant par là même tout risque de duplication des contenus entre une version sécurisée et non sécurisée d'un site, sans oublier le léger bonus induit par la mise à disposition d'une version sécurisée de son site.

HSTS et outils de gestion des balises et de collecte de données

L'activation du HSTS, à l'occasion de la migration vers le protocole HTTPs, permet de garantir une absence totale d'interruption d'exécution des outils de gestion des balises, dont les fichiers seraient hébergés en propre, directement sur un domaine appartenant au propriétaire du site Web concerné par le déploiement du protocole sécurisé.

En effet, il peut arriver que les équipes techniques omettent de changer le protocole spécifié dans le code source des pages, afin d'appeler les conteneurs de façon sécurisée. Bien que des redirections Web soient paramétrées simultanément à l'introduction du HSTS et qu'elles garantissent la mise à disposition de la version sécurisée des conteneurs, évitant par là même leur blocage par le navigateur, elles ne peuvent le faire qu'après une redirection. Autrement dit, en l'absence du HSTS, un décalage dans le chargement des conteneurs, d'une durée variable, mais nécessairement préjudiciable au volume de données collectées, s'avérerait incontournable.

Quid des outils de collecte de données dont les points de collecte et les fichiers nécessaires au bon fonctionnement seraient hébergés en dehors des domaines concernés par la migration vers le protocole HTTPs ? Le HSTS s'avère impuissant, à réécrire les requêtes à destination de domaines autres que celui où se trouvait le serveur l'ayant définie. Cette directive de sécurité ne permet donc pas de s'assurer que des données continueront à être transmises à l'ensemble des partenaires, si leurs ressources JavaScript et pages Web chargées via des iFrame, devaient continuer à être appelés de façon non sécurisée après la migration du site.

En conclusion

La directive de sécurité HSTS est un complément incontournable aux redirections mises en œuvre par les serveurs, assurant le bon fonctionnement d'un site concerné par une migration du protocole HTTP vers le protocole HTTPs. Utile du point de vue de la sécurité, du référencement naturel et de la performance, cette fonctionnalité ne peut cependant garantir à elle seule une continuité totale de la collecte de données, ayant lieu sur le site Web concerné par la migration, à destination de domaines tiers.