Les protocoles en texte clair, tels que HTTP, peuvent être vulnérables aux attaques par écoute clandestine, au cours desquelles un pirate informatique peut lire le contenu transmis. Le protocole TLS (Transport Layer Security) peut chiffrer le trafic et rendre beaucoup plus difficile l'utilisation de ces données par des pirates informatiques s'ils parviennent à les capturer.
Toutefois, il est possible pour des pirates informatiques de contourner TLS en forçant les connexions chiffrées à utiliser le protocole HTTP en texte clair. Pour résoudre ce problème, vous pouvez utiliser l'en-tête de réponse HTTP Strict Transport Security (HSTS). HSTS oblige le navigateur de l'utilisateur à accéder à un site Web à l'aide de TLS et ne lui permet pas de revenir à HTTP en texte brut pendant une durée déterminée.
Échec de l'audit Lighthouse
L'audit signale les problèmes suivants concernant l'en-tête HSTS :
- Si aucun en-tête HSTS n'est trouvé.
- S'il manque l'une des directives recommandées (
max-age,includeSubDomains,preload) - Si la durée de la directive
max-ageest inférieure à un an (31 536 000 secondes). - Si une erreur de syntaxe se produit lors de l'analyse de l'en-tête, par exemple une directive inconnue.
Configurer une règle HSTS efficace
La configuration optimale de l'en-tête HSTS se présente comme suit :
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
- La directive
max-agespécifie la durée pendant laquelle le navigateur de l'utilisateur est forcé de visiter un site Web en utilisant uniquement TLS (en secondes). Une fois le délai écoulé, les utilisateurs peuvent à nouveau accéder au site avec le protocole HTTP simple si le site Web ne fournit pas d'en-tête HSTS (ou de redirections temporaires de HTTP vers HTTPS). - La définition de la directive
includeSubDomainsapplique l'en-tête à tous les sous-domaines de l'URL de la page qui envoie l'en-tête initialement. Par exemple, sigoogle.comenvoie un en-tête HSTS qui inclut la directiveincludeSubDomains, l'en-tête HSTS sera appliqué àmail.google.com. - Définir la directive
preloadet envoyer le domaine au service de préchargement HSTS compilera le domaine dans les binaires du navigateur qui utilisent la liste HSTS préchargée. Cela vaut pour plus que Google Chrome.
Le déploiement de l'en-tête HSTS comporte certains risques. Toutes les fonctionnalités qui nécessitent une connexion HTTP non chiffrée seront effectivement inutilisables pendant la durée définie dans la directive max-age. Cela peut prendre encore plus de temps si la directive preload est appliquée.
Pour réduire les risques associés au déploiement, nous vous recommandons d'adopter une approche par étapes :
Commencez par un petit
max-ageet n'ajoutez queincludeSubDomains(pas depreload) :max-age=3600; includeSubDomainsAprès une période d'attente (une semaine, par exemple) sans problème signalé, augmentez
max-age. Exemple :max-age=604800; includeSubDomainsSi cette phase initiale est concluante pendant une période prolongée (par exemple, trois mois), le site Web et ses sous-domaines doivent être ajoutés à la liste de préchargement HSTS et la directive
preloaddoit être ajoutée.max-age=63072000; includeSubDomains; preload