Qu'est-ce que le TVHS?
HSTS (HTTP Strict Transport Security) est un mécanisme de sécurité Web qui indique aux navigateurs d'interagir uniquement avec un site Web via HTTPS, jamais HTTP. Une fois qu'un navigateur voit un en-tête HSTS, il mettra automatiquement à niveau toutes les requêtes futures vers HTTPS et refusera de se connecter via HTTP, même si l'utilisateur tape explicitement http://.
Pourquoi la TVH est importante
Même avec un certificat SSL valide, des vulnérabilités existent :
Attaque SSL de stripping
1. Types d'utilisateurs "example.com" (sans https://)
2. L'attaquant intercepte la requête HTTP initiale
3. Proxies de l'attaquant vers HTTPS, présente HTTP à l'utilisateur
4. L'utilisateur pense qu'ils sont sécurisés, mais l'attaquant voit tout
HSTS empêche cela en s'assurant que les navigateurs ne font jamais cette requête HTTP initiale.
Avantages de la TVH
- Prévient les attaques de dégradation: Pas de retour HTTP possible
- Protection des signets utilisateur: Même les anciens signets HTTP deviennent HTTPS
- Élimine le contenu mélangé: Les sous-ressources sont également forcées à HTTPS
- Améliore la performance: Pas de redirection HTTP→HTTPS nécessaire
TVHS En-tête Syntaxe
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Directives
| Directive | Désignation des marchandises |
|---|---|
| Âge maximal | Secondes pour se souvenir de la TVHS (31536000 = 1 an) |
| inclureSubDomains | Appliquer la TVHS à tous les sous-domaines |
| précharge | Consentement à l'inclusion de la liste de précharge du navigateur |
Mise en œuvre de la TVH
Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Nuageux
Activer dans SSL/TLS → Certificats d'Edge → Sécurité de transport stricte HTTP
"Express.js
const helmet = require('helmet');
app.use(helmet.hsts({
maxAge: 31536000,
includeSubDomains: true,
preload: true
}));
Liste de précharge de la TVH
La liste de précharge HSTS est une liste de domaines codés en dur dans les navigateurs qui ne devraient jamais être accessibles par HTTPS. Cela élimine même la première vulnérabilité de la requête HTTP.
Exigences de précharge
1. Certificat SSL valide
2. Rediriger tout HTTP vers HTTPS
3. En-tête TVHS avec:
- âge maximal au moins 31536000 (1 an)
- inclure la directive SubDomains
- directive précharge
Présentation à la liste de précharge
1. Vérifier les exigences: Utiliser hstspreload.org pour vérifier
2. Soumettre le domaine : Entrez le domaine à hstspreload.org
3. Atteinte à l'inclusion: Prend des semaines à des mois pour les mises à jour du navigateur
Avertissements de précharge
La précharge est permanente (pratiquement). Le retrait de la liste prend des mois et nécessite des mises à jour du navigateur. Seulement précharger si vous êtes certain que tous les sous-domaines prendront en charge HTTPS indéfiniment.Vérification de la TVH
Browser DevTools:1. Ouvrir DevTools → onglet réseau
2. Chargez le site
3. Vérifiez les en-têtes de réponse pour la sécurité strict-transport
Utilisation de la boucle:curl -I https://example.com | grep -i strict
Utilisation de DomScan:
curl "https://domscan.net/v1/health?domain=example.com"
# Reports hasHSTS in security details
État d'avancement du chargement :
Vérifiez hstspreload.org pour voir si un domaine est préchargé.
Stratégie de déploiement du SST
Phase 1: Âge maximal court
Commencez par un court âge max pour tester:
Strict-Transport-Security: max-age=300Si quelque chose casse, les utilisateurs ne cachent que 5 minutes.
Phase 2 : Augmentation de la durée
Après confirmation HTTPS fonctionne partout :
Strict-Transport-Security: max-age=86400
Phase 3: Ajouter des sous-domaines
Une fois tous les sous-domaines pris en charge HTTPS :
Strict-Transport-Security: max-age=2592000; includeSubDomains
Phase 4: Déploiement complet + Précharge
Après des mois de fonctionnement stable:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadPuis soumettre à la liste de précharge.
Enjeux communs en matière de TVH
Sous-domaine sans HTTPS: includeSubDomains casse ce sous-domaine Environnements de développement: le TVHS mis en cache à partir de la production rompt le développement local En-têtes CDN/Proxy: S'assurer que l'en-tête HSTS n'est pas dépouillé par les intermédiaires Contenu mixte: Toutes les ressources doivent être HTTPS ; HSTS ne corrige pas les ressources HTTP intégréesHSTS est essentiel pour tout site Web traitant des données sensibles et fortement recommandé pour tous les sites HTTPS.