Insecure HTTP Header Setting: HTTP Strict Transport Security (HSTS)
Configuration d'en-tête HTTP non sécurisée : HTTP Strict Transport Security (HSTS)
Description
HTTP Strict Transport Security (HSTS) est un mécanisme de politique de sécurité web par lequel un serveur web déclare que les agents utilisateurs compatibles (comme un navigateur web) doivent interagir avec lui en utilisant uniquement des connexions sécurisées (HTTPS). Le serveur communique la politique HSTS à l'agent utilisateur via un champ d'en-tête de réponse HTTP nommé « Strict-Transport-Security ». La politique HSTS spécifie une période pendant laquelle l'agent utilisateur doit accéder au serveur de manière exclusivement sécurisée.
Lorsqu'une application web émet une politique HSTS vers les agents utilisateurs, les agents utilisateurs conformes se comportent de la manière suivante :
- Ils transforment automatiquement tout lien non sécurisé (HTTP) référençant l'application web en lien sécurisé (HTTPS). (Par exemple, http://example.com/some/page/ sera modifié en https://example.com/some/page/ avant d'accéder au serveur.)
- Si la sécurité de la connexion ne peut être garantie (par exemple, le certificat TLS du serveur est auto-signé), les agents utilisateurs affichent un message d'erreur et ne permettent pas à l'utilisateur d'accéder à l'application web.
Recommandation
Configurez votre serveur web pour rediriger les requêtes HTTP vers HTTPS.
Par exemple, pour Apache, vous devez apporter des modifications dans le fichier httpd.conf. Pour plus de configurations, veuillez vous référer à la section des références externes.
# charger le module
LoadModule headers_module modules/mod_headers.so
# rediriger tout le trafic HTTP vers HTTPS (optionnel)
<VirtualHost *:80>
ServerAlias *
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
# HTTPS-Host-Configuration
<VirtualHost *:443>
# Utiliser HTTP Strict Transport Security pour forcer le client à utiliser uniquement des connexions sécurisées
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# La suite de la configuration va ici
[...]
</VirtualHost>
Liens
Normes
- OWASP_ASVS_L1:
- V14_4_5
- OWASP_ASVS_L2:
- V14_4_5
- OWASP_ASVS_L3:
- V14_4_5
- PCI_STANDARDS:
- REQ_2_2
- REQ_3_6
- REQ_3_7
- REQ_4_2
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_11_3
- HIPAA_CONTROLS:
- SECURITY252
- SECURITY212
- SECURITY213