HTTP Strict Transport Security (HSTS) est un mécanisme de politique de sécurité Web qui permet de protéger les sites Web contre les attaques de dégradation de protocole et le détournement de cookies. Il permet aux serveurs Web de déclarer que les navigateurs Web (ou autres agents utilisateurs conformes) ne doivent interagir avec lui qu'à l'aide de connexions HTTPS sécurisées et jamais via le protocole HTTP non sécurisé.
Guide rapide : mise en œuvre du HSTS
-
Assurez-vous que votre site Web est entièrement accessible via HTTPS.
-
Ajoutez l'en-tête Strict-Transport-Security aux réponses de votre serveur Web :
Strict-Transport-Security: max-age = 300; includeSubDomains; précharger
-
Testez votre implémentation HSTS à l’aide d’outils en ligne et d’outils de développement de navigateur.
-
Augmentez la valeur max-age après avoir confirmé la mise en œuvre correcte.
-
Envisagez de soumettre votre domaine à la liste de préchargement HSTS pour une sécurité maximale.
Explorons maintenant les détails du HSTS, ses avantages et ses considérations de mise en œuvre.
Comprendre le HSTS en détail
Quel problème le HSTS résout-il ?
HSTS a été développé pour répondre à plusieurs vulnérabilités de sécurité qui existent lorsque les sites Web s'appuient uniquement sur HTTPS sans protections supplémentaires :
- Attaques de décapage SSL:Un attaquant pourrait intercepter la requête HTTP initiale et rediriger l'utilisateur vers une version non sécurisée du site.
- Contenu mixte:Certaines ressources sur une page peuvent toujours être chargées via HTTP, créant ainsi des vulnérabilités de sécurité.
- Comportement de l'utilisateur:Les utilisateurs peuvent saisir manuellement « http:// » ou omettre complètement le protocole lors de la saisie d’une URL, s’exposant ainsi potentiellement à des connexions non sécurisées.
HSTS atténue ces problèmes en forçant toutes les connexions à utiliser HTTPS, même lorsqu'un utilisateur tente d'accéder à un site via HTTP.
Comment fonctionne le HSTS
Lorsqu'un serveur Web envoie l'en-tête HSTS dans sa réponse, il demande au navigateur de :
- Convertissez automatiquement tous les liens HTTP non sécurisés en liens HTTPS sécurisés.
- Empêcher les utilisateurs de contourner les avertissements de certificat.
- Mémorisez cette instruction pendant une période déterminée (définie par la directive max-age).
Voici une répartition des composants de l'en-tête HSTS :
- max-age: Spécifie la durée (en secondes) pendant laquelle le navigateur doit se souvenir de forcer HTTPS.
- inclure des sous-domaines: (Facultatif) Applique la politique HSTS à tous les sous-domaines du domaine actuel.
- pré-charge: (Facultatif) Indique que le propriétaire du domaine consent à ce que son domaine soit préchargé dans les navigateurs.
Avantages de la mise en œuvre du HSTS
- Sécurité Améliorée :Protège contre les attaques de type « man-in-the-middle », le dépouillement SSL et le détournement de cookies.
- Amélioration de l'expérience de l'utilisateur: Redirige automatiquement les requêtes HTTP vers HTTPS, réduisant ainsi la latence.
- Avantages SEO:Les moteurs de recherche privilégient les sites Web sécurisés, améliorant potentiellement les classements de recherche.
- Conformité:Aide à répondre à diverses exigences réglementaires en matière de protection des données et de confidentialité.
Implémentation de HSTS sur votre serveur Web
Étape 1 : Préparez votre site Web pour HTTPS
Avant d’implémenter HSTS, assurez-vous que votre site Web est entièrement fonctionnel via HTTPS :
- Obtenir un SSL/TLS certificat provenant d'une autorité de certification de confiance telle que SSL.com.
- Installez le certificat sur votre serveur Web.
- Configurez votre serveur Web pour utiliser HTTPS.
- Mettre à jour tous les liens internes pour utiliser HTTPS.
- Assurez-vous que toutes les ressources externes (scripts, images, etc.) sont chargées via HTTPS.
Étape 2 : ajouter l’en-tête HSTS
Commencez par ajouter l'en-tête HSTS avec une valeur max-age courte pour tester votre configuration. Par exemple, utilisez max-age=300 (5 minutes) :
Apache
Ajoutez ce qui suit à votre fichier .htaccess ou à la configuration de votre serveur :
En-tête toujours définir Strict-Transport-Security "max-age=300; includeSubDomains; préchargement"
Nginx
Ajoutez ceci à votre bloc serveur dans la configuration Nginx :
add_header Strict-Transport-Sécurité "max-age=300; includeSubDomains; préchargement" toujours;
IIS
Pour IIS, vous pouvez ajouter l'en-tête via le fichier web.config :
<système.webServer>
<Protocole http>
<en-têtes personnalisés>
<ajouter prénom=« Sécurité stricte des transports » Plus-value="max-age=300; includeSubDomains; préchargement"/>
</en-têtes personnalisés>
</Protocole http>
</système.webServer>
Étape 3 : Testez votre implémentation HSTS
Après avoir ajouté l'en-tête, il est essentiel de tester votre implémentation :
-
Utiliser les outils en ligne:Des outils tels que SSL Labs ou Security Headers peuvent vérifier que l'en-tête HSTS est présent et correctement configuré.
-
Outils de développement de navigateur:
-
Ouvrez votre site Web dans un navigateur (par exemple, Chrome ou Firefox).
-
Appuyez sur F12 pour ouvrir les outils de développement.
-
Accédez à l’onglet Réseau.
-
Actualisez la page et sélectionnez la demande initiale (généralement votre domaine).
-
Recherchez l'en-tête Strict-Transport-Security sous la section En-têtes pour confirmer qu'il est envoyé.
-
-
Tester l'application HTTPS:
-
Essayez d'accéder à votre site Web via http:// et assurez-vous qu'il redirige vers https://.
-
Vérifiez que les sous-domaines sont également sécurisés si vous avez inclus la directive includeSubDomains.
-
Étape 4 : Augmenter la valeur de l'âge maximum
Une fois que vous avez confirmé que votre implémentation HSTS fonctionne correctement avec un âge maximal court, vous pouvez l'augmenter à une durée plus longue, par exemple un an (âge maximal = 31536000 XNUMX XNUMX) :
Apache
En-tête toujours définir Strict-Transport-Security "max-age=31536000; includeSubDomains; préchargement"
Nginx
add_header Strict-Transport-Sécurité "max-age=31536000; includeSubDomains; préchargement" toujours;
IIS
<système.webServer>
<Protocole http>
<en-têtes personnalisés>
<ajouter prénom=« Sécurité stricte des transports » Plus-value="max-age=31536000; includeSubDomains; préchargement"/>
</en-têtes personnalisés>
</Protocole http>
</système.webServer>
Étape 5 : Envisager le préchargement HSTS
Le préchargement HSTS offre une couche de sécurité supplémentaire en incluant votre domaine dans une liste de sites compatibles HSTS codée en dur dans les navigateurs. Pour précharger votre site :
- Assurez-vous que votre en-tête HSTS inclut
preload
dans la directive. - Visitez le site Web de soumission de la liste de préchargement HSTS.
- Entrez votre domaine et suivez le processus de soumission.
Remarque : le préchargement est une protection efficace, mais il peut être difficile de l'annuler. Assurez-vous que votre site est prêt pour un accès HTTPS à long terme avant de le soumettre.
Meilleures pratiques et considérations
- Commencez avec un âge maximum court: Commencez par une valeur inférieure (par exemple, max-age=300) et augmentez-la progressivement au fur et à mesure que vous vérifiez que tout fonctionne correctement. Cela évite que les utilisateurs ne soient exclus en cas de mauvaise configuration.
- Soyez prudent avec includeSubDomains: Assurez-vous que tous les sous-domaines sont prêts pour HTTPS avant d'utiliser cette option.
- Plan à long terme:Une fois le protocole HSTS implémenté, le retour au protocole HTTP peut s'avérer difficile. Assurez-vous que votre organisation s'engage à maintenir le protocole HTTPS.
- Surveillance régulière:Surveillez en permanence votre configuration HTTPS pour vous assurer que les certificats restent valides et correctement configurés.
- Éducation des utilisateurs:Bien que HSTS gère une grande partie automatiquement, sensibilisez vos utilisateurs à l’importance du HTTPS et à la surveillance des avertissements de sécurité.
Défis potentiels et solutions
Problèmes de contenu mixte
- Défi:Certaines ressources se chargent toujours via HTTP.
- Solution:Utilisez les en-têtes de politique de sécurité du contenu (CSP) pour détecter et signaler le contenu mixte.
Expiration du certificat
- Défi:Les certificats expirés peuvent bloquer les utilisateurs en raison de politiques HSTS strictes.
- Solution:Mettre en œuvre des systèmes automatisés de renouvellement et de surveillance des certificats.
Complications liées au proxy inverse
- Défi:Les en-têtes HSTS peuvent ne pas se propager correctement via certaines configurations de proxy inverse.
- Solution: Assurez-vous que votre proxy inverse est configuré pour transmettre ou définir correctement les en-têtes HSTS.
Environnements de développement et de test
- Défi:HSTS peut compliquer l’accès aux environnements de développement non HTTPS.
- Solution:Utilisez des domaines distincts pour le développement/la préparation qui ne sont pas compatibles HSTS.
Pour aller plus loin
HTTP Strict Transport Security (HSTS) est un outil puissant. En imposant des connexions sécurisées, HSTS protège votre site Web et ses utilisateurs contre diverses attaques. Bien que la mise en œuvre nécessite une planification et une exécution minutieuses, les avantages en matière de sécurité dépassent de loin les complexités de la configuration initiale.
N'oubliez pas que la sécurité Web est un processus continu. Révisez et mettez à jour régulièrement votre politique HSTS, surveillez votre implémentation HTTPS et restez informé des meilleures pratiques émergentes en matière de sécurité Web pour assurer la sécurité de votre site Web et de vos utilisateurs.