HTTP Strict Transport Security

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 http://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.
Note : L'en-tête 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.

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

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : Tom_D, romainfl, tregagnon, Goofy
 Dernière mise à jour par : Tom_D,