Partie 7 de la série « Sécurité web dans l'UE : 10 étapes pour une meilleure note »
X-Content-Type-Options
Le problème
Les navigateurs essaient parfois de « deviner » le type d'un fichier — indépendamment de l'en-tête Content-Type. Une image qui contient en réalité du JavaScript ? Le navigateur l'exécute. C'est ce qu'on appelle le MIME sniffing, et c'est une porte d'entrée pour les attaques par injection.
La solution
X-Content-Type-Options: nosniff
Un en-tête, une valeur. Le navigateur n'accepte que les fichiers avec le type MIME déclaré.
Adoption : 27,7%. Près de trois quarts des sites web de l'UE sont vulnérables aux attaques par confusion MIME.
Comment le configurer
Nginx :
add_header X-Content-Type-Options "nosniff" always;
Apache :
Header always set X-Content-Type-Options "nosniff"
Il n'y a qu'une seule valeur valide (nosniff), pas de configuration, pas d'effets secondaires. Aucune raison de ne pas le configurer.
Referrer-Policy
Le problème
Lorsqu'un utilisateur clique sur un lien externe sur votre site web, le navigateur envoie par défaut l'URL complète de la page d'origine comme en-tête Referrer. Cela peut divulguer des informations sensibles :
https://votre-domaine.com/dashboard?user=12345&token=abchttps://votre-domaine.com/admin/reports/audit-confidentielhttps://votre-domaine.com/search?q=symptomes+medicaux
L'opérateur du site cible voit l'URL complète — y compris les paramètres de requête, les chemins et les jetons de session.
La solution
Referrer-Policy: strict-origin-when-cross-origin
Avec cette politique, le navigateur envoie :
- Lors de la navigation vers un autre domaine : uniquement l'origine (https://votre-domaine.com), pas de chemins
- Au sein de votre propre domaine : l'URL complète (utile pour l'analytique)
- Lors d'une dégradation HTTPS vers HTTP : rien
Adoption : 13,1%.
Comment le configurer
Nginx :
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Apache :
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Politiques alternatives
| Politique | Comportement | Recommandation |
|---|---|---|
no-referrer |
Ne jamais envoyer de referrer | Trop strict (casse l'analytique) |
origin |
Toujours envoyer uniquement l'origine | Bien, mais perd les chemins internes |
strict-origin-when-cross-origin |
Origine inter-domaines, complet en interne | Recommandé |
same-origin |
Complet en interne, rien en externe | Bien pour les applications sensibles |
Les deux ensemble : le snippet Nginx
# En-têtes de sécurité — prêt à copier-coller
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Quatre en-têtes, quatre lignes. Dans votre configuration Nginx ou un fichier include. Combinés avec les Parties 1-3 de cette série, ils couvrent les six en-têtes de sécurité les plus importants.
Vérifiez vos en-têtes
La semaine prochaine dans la Partie 8 : Enregistrements CAA — quelle autorité de certification est autorisée à émettre des certificats pour votre domaine ?