Passer au contenu principal

Qu'est-ce que l'en-tête HTTP Strict-Transport-Security (HSTS) ?

L’en-tête de réponse HTTP Strict-Transport-Security (HSTS) est un mécanisme de sécurité qui informe les navigateurs que votre site doit uniquement être accessible via HTTPS. Il convertit automatiquement toute tentative d’accès en utilisant HTTP en HTTPS.

L'en-tête HSTS est ignoré par le navigateur si votre site a été accédé uniquement via HTTP. Cependant, une fois que votre site a été accédé via HTTPS sans erreurs de certificat, le navigateur reconnaît que votre site est capable de HTTPS et respectera l’en-tête HSTS.

Pourquoi utiliser HSTS plutôt qu’une simple redirection HTTP vers HTTPS ?

L’utilisation de l’en-tête HSTS est plus sécurisée que la simple configuration d’une redirection HTTP vers HTTPS (301) sur votre serveur. En effet, la connexion HTTP initiale est toujours vulnérable à une attaque de type man-in-the-middle. Par exemple, si un site Web accepte une connexion via HTTP et redirige vers HTTPS, les visiteurs peuvent initialement communiquer avec la version non cryptée du site avant d’être redirigés. Cela crée une opportunité pour une attaque de type man-in-the-middle. L’en-tête HSTS informe le navigateur qu’il ne doit jamais charger un site en utilisant HTTP et convertit automatiquement toutes les tentatives d’accès au site en utilisant HTTP en requêtes HTTPS.

Comment configurer l'en-tête HSTS pour votre site web ?

Pour renforcer la sécurité de votre site web en forçant les connexions HTTPS, vous pouvez configurer l'en-tête HTTP Strict Transport Security (HSTS) comme suit :

Strict-Transport-Security: max-age=<expire-time>; includeSubDomains; preload
max-age=<expire-time> Le temps, en secondes, pendant lequel le navigateur doit se souvenir qu’un site doit uniquement être accessible via HTTPS.

includeSubDomains (optionnel) 

Si ce paramètre est spécifié, cette règle s’applique à tous les sous-domaines du site.
preload (optionnel)

Cela signifie que le navigateur saura, avant même sa première visite, que votre site doit être chargé uniquement via HTTPS. Lors de l’utilisation de preload, la directive max-age doit être d’au moins 31536000 secondes (1 an), et la directive includeSubDomains doit être présente.