Aller au contenu principal
Security Headers Scanner
L'observatoire des en-têtes de
sécurité de vos sites internet
Analyses totales 15210
Score moyen 38,70
Sites analysés 2013
Meilleur score 155

Strict-Transport-Security (HSTS)

Demander au navigateur d’utiliser systématiquement HTTPS pour accéder à un site.

Comprendre HSTS

Strict-Transport-Security, souvent abrégé en HSTS, est une règle de sécurité qui indique au navigateur : « pour ce site, utilise toujours HTTPS ».

Une connexion HTTPS chiffre les échanges entre le navigateur et le site. Cela permet notamment d’empêcher qu’une personne placée entre les deux puisse facilement lire ou modifier les informations transmises.

Pourquoi HSTS est-il important ?

Lorsqu’un utilisateur saisit simplement :

example.com

le navigateur peut commencer par tenter une connexion en HTTP avant d’être redirigé vers HTTPS.

Pendant cette première étape, la connexion n’est pas encore protégée par le chiffrement HTTPS. Un attaquant présent sur le réseau pourrait alors tenter d’intercepter ou de modifier cette communication.

HSTS demande au navigateur de retenir que ce domaine doit être utilisé uniquement en HTTPS.

Lors des visites suivantes, le navigateur peut donc utiliser directement HTTPS sans commencer par une connexion HTTP non sécurisée.

Configurer HSTS

Le serveur transmet HSTS grâce à l’en-tête HTTP :

Strict-Transport-Security: max-age=31536000

Dans cet exemple, le navigateur doit retenir pendant 31 536 000 secondes, soit environ un an, que le site doit toujours être utilisé en HTTPS.

Pendant cette période, si l’utilisateur tente d’accéder au site en HTTP, le navigateur peut automatiquement remplacer l’adresse par sa version HTTPS avant même d’envoyer la requête.

Les principaux paramètres

max-age

Définit pendant combien de temps le navigateur doit mémoriser que le site doit être utilisé uniquement en HTTPS.

includeSubDomains

Étend la règle HSTS à tous les sous-domaines concernés. Tous ces sous-domaines doivent donc fonctionner correctement en HTTPS.

preload

Indique que le domaine est destiné à utiliser le mécanisme de préchargement HSTS. Celui-ci permet à certains navigateurs de connaître la règle HTTPS avant même la première visite.

Exemple plus complet

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Cette configuration demande au navigateur :

  • d’utiliser HTTPS pendant un an ;
  • d’appliquer également cette règle aux sous-domaines ;
  • et indique que le domaine est destiné à utiliser le préchargement HSTS.

Activer HSTS sans créer de problème

HSTS est une protection importante, mais le navigateur prend réellement la règle au sérieux une fois qu’il l’a enregistrée.

Il faut donc s’assurer que le site fonctionne correctement en HTTPS avant d’imposer cette règle pendant une longue durée.

Attention à includeSubDomains

Lorsque includeSubDomains est activé, la règle ne concerne plus seulement le domaine principal.

Par exemple, une politique appliquée à :

example.com

peut également concerner :

app.example.com
mail.example.com
api.example.com

Si l’un de ces sous-domaines ne fonctionne pas correctement en HTTPS, le navigateur pourra refuser de revenir vers une connexion HTTP tant que la règle HSTS reste active.

Et le préchargement HSTS ?

Le préchargement permet à certains navigateurs de connaître à l’avance les domaines qui doivent obligatoirement utiliser HTTPS.

Cela permet de protéger dès la toute première connexion, sans attendre que le navigateur ait déjà reçu un en-tête HSTS.

En contrepartie, cette configuration doit être préparée avec soin : l’ensemble du domaine concerné doit être capable de fonctionner durablement en HTTPS.

Que se passe-t-il lorsque max-age expire ?

Lorsque la durée indiquée arrive à expiration, le navigateur peut oublier la règle HSTS s’il ne l’a pas reçue à nouveau entre-temps.

En pratique, un site correctement configuré renvoie généralement l’en-tête HSTS lors des visites HTTPS, ce qui renouvelle régulièrement la durée de validité de la règle.

Bonnes pratiques et limites

Bonnes pratiques

  • Utiliser HSTS sur un site destiné à fonctionner exclusivement en HTTPS.
  • Vérifier que le site fonctionne correctement en HTTPS avant d’activer une durée longue.
  • Utiliser un max-age suffisamment long lorsque la configuration HTTPS est stable.
  • Activer includeSubDomains uniquement lorsque tous les sous-domaines concernés utilisent correctement HTTPS.
  • Vérifier soigneusement l’ensemble de la configuration avant d’utiliser preload.
  • Continuer à rediriger correctement les accès HTTP vers HTTPS, même lorsque HSTS est activé.

Ce que HSTS ne remplace pas

HSTS est une protection essentielle pour imposer HTTPS, mais il ne sécurise pas à lui seul l’ensemble du site.

Il ne remplace notamment pas :

  • un certificat TLS valide ;
  • une configuration HTTPS correcte ;
  • la sécurité du code ;
  • les mises à jour du site et de ses dépendances ;
  • les autres mécanismes de sécurité nécessaires.

HSTS doit donc être considéré comme une protection à mettre en place sur un site fonctionnant en HTTPS, afin d’éviter qu’un navigateur utilise accidentellement une connexion HTTP non sécurisée.

À retenir : HSTS indique au navigateur qu’un site doit toujours être consulté en HTTPS.
Une fois la règle connue, le navigateur peut éviter de commencer par une connexion HTTP non chiffrée, ce qui contribue à protéger les utilisateurs contre certaines tentatives d’interception ou de modification des communications.