HSTS est un mécanisme de sécurité défini dans la RFC 6797 qui force les navigateurs à utiliser HTTPS pour toutes les futures connexions à un domaine, prévenant les attaques par dégradation de protocole et les vulnérabilités de type interception.
Lorsqu'un serveur répond avec l'en-tête Strict-Transport-Security, le navigateur met en cache la politique pendant la durée spécifiée dans la directive max-age (en secondes). Toute tentative ultérieure d'accès au domaine via HTTP est automatiquement mise à jour vers HTTPS, même si l'utilisateur tape http:// dans la barre d'adresse ou clique sur un lien non sécurisé.
Exemple d'en-tête :
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
La directive includeSubDomains étend la politique à tous les sous-domaines, et preload permet au domaine d'être inclus dans les listes de préchargement des navigateurs—intégrées nativement dans Chrome, Firefox, Safari et Edge—afin que HTTPS soit appliqué même à la première visite de l'utilisateur, avant que l'en-tête ne soit jamais reçu.
Exigences de préchargement : Si vous utilisez preload, max-age doit être au moins 31536000 (1 an) et includeSubDomains doit être présent. Les domaines doivent également être soumis manuellement à la liste de préchargement HSTS pour vérification.
WarningSans soumission au préchargement, HSTS ne protège les utilisateurs qu'après leur première visite sur votre site via HTTPS. À cette première visite, ils restent vulnérables aux attaques par dégradation de protocole sauf si votre serveur redirige tout le trafic HTTP vers HTTPS avant d'envoyer l'en-tête.
HSTS est essentiel pour les applications hautement sécurisées et est couramment associé aux certificats SSL pour verrouiller les navigateurs sur des connexions sécurisées uniquement.