Qu'est-ce que les En-têtes de Sécurité ?
Les en-têtes de sécurité sont des en-têtes de réponse HTTP qui instruisent les navigateurs sur comment se comporter lors de la gestion du contenu d'un site web, améliorant la protection contre les vulnérabilités web courantes. Ces en-têtes aident à prévenir les attaques comme le cross-site scripting (XSS), le clickjacking, l'injection de contenu et les attaques par dégradation de protocole. Les en-têtes de sécurité correctement configurés sont essentiels pour les stratégies de sécurité en profondeur.
En-têtes de Sécurité Essentiels
Strict-Transport-Security (HSTS)
Force les connexions HTTPS :
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
- Prévient les attaques par dégradation de protocole
- Bloque le contenu mixte
- Protège contre les attaques SSL stripping
Content-Security-Policy (CSP)
Contrôle le chargement des ressources :
Content-Security-Policy: default-src 'self'; script-src 'self' trusted.com; style-src 'self' 'unsafe-inline'
- Prévient les attaques XSS
- Contrôle les sources de script
- Bloque les ressources non autorisées
X-Frame-Options
Prévient le clickjacking :
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
- Bloque le site d'être encadré
- Protège contre la réorientation d'interface utilisateur
X-Content-Type-Options
Prévient le sniffing MIME :
X-Content-Type-Options: nosniff
- Force le navigateur à respecter le Content-Type déclaré
- Prévient l'injection de script via fichiers mal interprétés
En-têtes de Sécurité Supplémentaires
| En-tête | Objectif | Valeur Exemple |
|---|---|---|
| X-XSS-Protection | Filtre XSS (hérité) | 1; mode=block |
| Referrer-Policy | Contrôler l'info de référent | strict-origin-when-cross-origin |
| Permissions-Policy | Restrictions de fonctionnalité | geolocation=(), camera=() |
| Cross-Origin-Opener-Policy | Isolation des processus | same-origin |
| Cross-Origin-Embedder-Policy | Isolation des ressources | require-corp |
Exemples d'Implémentation
Configuration Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Content-Security-Policy "default-src 'self'" always;
Configuration Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
En-têtes de Sécurité et Santé du Domaine
Pourquoi les En-têtes Sont Importants pour les Domaines
- Protéger les utilisateurs visitant votre domaine
- Prévenir les dommages à la réputation du domaine
- Répondre aux exigences de conformité
- Défendre contre les attaques courantes
Test des En-têtes de Sécurité
Outils pour vérifier l'implémentation :
- securityheaders.com
- Mozilla Observatory
- SSL Labs
- Onglet Réseau des Chrome DevTools
Meilleures Pratiques
1. Commencer avec HSTS : Essentiel pour l'application de HTTPS
2. Implémenter CSP progressivement : Commencer par le mode rapport uniquement
3. Tester à fond : Les en-têtes peuvent casser les fonctionnalités
4. Utiliser les listes de préchargement : Soumettre aux listes de préchargement des navigateurs
5. Surveiller les violations : Utiliser les points de terminaison de rapport CSP
6. Audits réguliers : Les exigences de sécurité évoluent
Critères de Notation Courantes
| Évaluation | Exigences Typiques |
|---|---|
| A+ | Tous les en-têtes critiques, HSTS preload |
| A | HSTS, CSP, X-Frame-Options, X-Content-Type |
| B | Certains en-têtes manquants |
| C/D | En-têtes de sécurité minimaux |
| F | Pas d'en-têtes de sécurité |
Les en-têtes de sécurité représentent une couche critique de sécurité des applications web, fournissant une protection appliquée par le navigateur qui complète les mesures de sécurité côté serveur.