Ajouter HSTS à votre site web
Si votre analyse de sécurité indique que HSTS n'est pas configuré, les navigateurs qui visitent votre site ne sont pas obligés d'utiliser HTTPS à chaque requête. Ce guide explique comment ajouter correctement l'en-tête Strict-Transport-Security.
Ce que signifie ce constat
HSTS (HTTP Strict Transport Security) est un en-tête de réponse HTTP qui indique aux navigateurs de toujours utiliser HTTPS pour se connecter à votre domaine, et de refuser entièrement les connexions HTTP pendant une durée donnée. Sans HSTS, même si votre serveur redirige HTTP vers HTTPS, la première requête d'un utilisateur sur une nouvelle connexion peut brièvement passer en HTTP non chiffré avant que la redirection ne s'applique.
Pourquoi c'est important
- Empêche les attaques de type SSL stripping, dans lesquelles un attaquant fait passer une connexion de HTTPS à HTTP
- Supprime la fenêtre de vulnérabilité de la première requête HTTP
- Indispensable pour le préchargement HSTS, la liste tenue par les navigateurs des sites toujours en HTTPS
- Renforce la confiance des utilisateurs et constitue un élément utile dans la plupart des évaluations de domaine
La bonne valeur d'en-tête HSTS
Commencez avec un max-age court, puis augmentez-le lorsque vous êtes sûr que HTTPS fonctionne de manière fiable sur l'ensemble de votre domaine.
Valeur de départ (sans risque)
Elle indique aux navigateurs d'utiliser HTTPS pendant 24 heures :
Strict-Transport-Security: max-age=86400
Valeur recommandée (une fois le bon fonctionnement confirmé)
Elle impose HTTPS pendant un an sur tous les sous-domaines :
Strict-Transport-Security: max-age=31536000; includeSubDomains
Valeur prête pour le préchargement (facultatif)
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
preload : Le préchargement HSTS est difficile à annuler. N'ajoutez la directive preload que lorsque vous êtes certain que chaque sous-domaine de votre domaine sert correctement HTTPS. Une fois le domaine soumis à la liste de préchargement, son retrait met des mois à se propager.Ajouter l'en-tête selon votre plateforme
Cloudflare
Settings → SSL/TLS → Edge Certificates → HTTP Strict Transport Security → Enable. Réglez max-age sur au moins 6 mois. Cloudflare ajoute alors l'en-tête automatiquement.
Nginx
Ajoutez dans votre bloc server :
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Apache
Ajoutez dans votre fichier .htaccess ou dans la configuration de votre VirtualHost :
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Vercel
Ajoutez dans vercel.json :
{
"headers": [
{
"source": "/(.*)",
"headers": [
{
"key": "Strict-Transport-Security",
"value": "max-age=31536000; includeSubDomains"
}
]
}
]
}Netlify
Ajoutez dans netlify.toml :
[[headers]]
for = "/*"
[headers.values]
Strict-Transport-Security = "max-age=31536000; includeSubDomains"Vérifier que cela fonctionne
Analysez votre domaine sur mydomainrisk.com : le constat HSTS indiquera la valeur max-age détectée et si includeSubDomains et preload sont présents.
Vérifiez vos en-têtes de sécurité
MyDomainRisk vérifie HSTS, CSP, X-Frame-Options, Referrer-Policy, Permissions-Policy et bien d'autres, gratuitement.
Analyser un domaine gratuitement →