Cet article nécessite une relecture technique. Voici comment vous pouvez aider.
HTTP Strict Transport Security (souvent abrégé par HSTS) est un dispositif de sécurité par lequel un site web peut déclarer aux navigateurs qu'ils doivent communiquer avec lui en utilisant exclusivement le protocole HTTPS, au lieu du HTTP.
Pourquoi est-ce utile ?
Si un site web accepte une connexion via HTTP et la redirige en HTTPS, l'utilisateur peut dans la phase initiale être en communication avec la version non chiffrée du site avant la redirection, si par exemple il entre une adresse comme https://www.machin.com/ ou même seulement machin.com.
Ce qui ouvre une brèche potentielle à une attaque de l'homme du milieu (man-in-the-middle attack), par laquelle la redirection peut être détournée pour envoyer l'utilisateur vers un site malveillant au lieu de la version sécurisée de la page désirée.
Le mécanisme HTTP Strict Transport Security permet au site web d'informer le navigateur qu'il ne doit jamais charger le site utilisant le HTTP, et doit en revanche convertir toutes les requêtes en HTTP en requêtes HTTPS.
Un exemple d'utilisation
Vous vous connectez sur un point d'accès WiFi public dans un aéroport et commencez à naviguer sur le Web, vous vérifiez sur votre service bancaire en ligne l'état de votre compte et payez quelques factures. Malheureusement le point d'accès que vous utilisez est en fait l'ordinateur portable d'un pirate, et il intercepte votre requête initiale en HTTP et la redirige vers une copie frauduleuse du site de votre banque et non vers le site authentique. Et voilà comment vos données confidentielles se retrouvent entre les mains du pirate.
Le protocole Strict Transport Security résout ce problème ; si vous avez accédé une première fois au site de votre banque en utilisant le HTTPS, et que le site de la banque utilise le protocole Strict Transport Security, votre navigateur saura automatiquement qu'il ne doit utiliser que le HTTPS, ce qui empêchera les pirates de mener une attaque de typel'homme du milieu .
Activation du protocole Strict Transport Security
Activer le dispositif sur votre site consiste tout simplement à retourner l'en-tête HTTP Strict-Transport-Security
quand votre site reçoit une requête d'accès HTTPS :
Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
expireTime
- La durée exprimée en secondes, pendant laquelle le navigateur doit retenir que le site n'est accessible que par le protocole HTTPS.
includeSubDomains
Facultatif- Si ce paramètre facultatif est précisé, la règle s'appliquera également à tous les sous-domaines du site.
preload
Facultatif- Voir Liste préchargé pour Strict Transport Security pour le détail. Ne fait pas partie de la spécification.
Strict-Transport-Security
est ignoré par le navigateur si on accède à votre site en utilisant HTTP ; en effet, un attaquant malveillant peut intercepter les connexions via HTTP et injecter un autre en-tête ou le supprimer. Quand on accède à votre site via HTTPS sans erreur de certificat, le navigateur sait que le site est compatible HTTPS et respectera l'en-tête Strict-Transport-Security
.Comment le navigateur gère le protocole
La première fois qu'on accède à votre site via HTTPS et qu'il renvoie l'en-tête Strict-Transport-Security
, le navigateur mémorise cette information, de sorte que toutes les tentatives ultérieures de connexion via HTTP utiliseront automatiquement le HTTPS en substitution.
Lorsque le délai d'expiration (expireTime
) précisé dans l'en-tête Strict-Transport-Security arrive à son terme, la tentative suivante de charger le site via HTTP sera traitée comme normale au lieu d'être automatiquement convertie en HTTPS.
À chaque fois que l'en-tête Strict-Transport-Security est transmis au navigateur, celui-ci met à jour le délai d'expiration pour ce site, ce qui permet au concepteur du site de réactualiser cette information et éviter de dépasser le délai d'expiration.
Liste préchargé pour Strict Transport Security
Google maintiens un service de pré-chargement pour HSTS. En suivant les recommandations et en soumettant votre domaine, les navigateurs utilisant cette liste ne se connecteront jamais en utilisant une connexion non sécurisée. Bien que le service soit hébergé par google, tous les navigateurs web on commencés (ou commencent) à utiliser cette liste.
- Informations et consultation de la liste préchargé dans Chrome : https://www.chromium.org/hsts
- Consultation de la liste préchargé dans Firefox : nsSTSPreloadList.inc
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support basique | 4.0.211.0 | Unknown (4.0) | 11 (June 2015)[1] | 12 | Pas de support |
Fonctionnalité | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Support basique | 18 | Unknown (4.0) | Pas de support | ? | Pas de support |
[1] KB 3058515
Spécifications
Voir également
- Ce billet : HTTP Strict Transport Security has landed!
- Cet autre billet : HTTP Strict Transport Security (force HTTPS)
- L'article sur OWASP : HTTP Strict Transport Security
- La page Wikipédia en français : HTTP Strict Transport Security