En-tête X-Content-Type-Options
L'en-tête de réponse HTTP X-Content-Type-Options indique que les types MIME annoncés dans les en-têtes Content-Type doivent être respectés et ne pas être modifiés.
L'en-tête permet d'éviter la détection du type MIME en définissant que les types MIME sont délibérément configurés.
Les testeur·euse·s en sécurité du site s'attendent généralement à ce que cet en-tête soit défini (et que l'en-tête Content-Type soit correctement défini pour toutes les ressources).
La directive nosniff a deux effets selon le contexte :
- Blocage des requêtes : Pour les requêtes avec une destination de
"script"ou"style", le navigateur bloque la réponse si le type MIME ne correspond pas à un type attendu (un type MIME JavaScript (angl.) pour les scripts, outext/csspour les feuilles de style). Voir la spécification Fetch (angl.) pour plus de détails. - Désactivation de la détection du type MIME : Pour les autres types de réponse, y compris les navigations vers un nouveau document HTML, le navigateur utilise le
Content-Typefourni tel quel au lieu d'examiner le contenu pour en déduire le type. Par exemple, si un serveur envoie une réponse avecContent-Type: text/plainetX-Content-Type-Options: nosniff, le navigateur ne l'interprète pas comme du HTML, même si le contenu contient du balisage HTML. Cela empêche les attaques XSS où le contenu téléchargé par l'utilisateur·ice est exécuté comme un document HTML, même si le navigateur a défini qu'il doit être traité comme du texte brut (ou un autre type). Voir la spécification sur la détection du type MIME (angl.) pour plus de détails.
| Type d'en-tête | En-tête de réponse |
|---|---|
| En-tête de réponse interdit | Non |
Syntaxe
X-Content-Type-Options: nosniff
Directives
nosniff-
Bloque une requête si sa destination est de type
styleet que le type MIME n'est pastext/css, ou de typescriptet que le type MIME n'est pas un type MIME JavaScript (angl.).Il empêche également la détection du type MIME pour tous les autres types de réponse, obligeant le navigateur à utiliser le
Content-Typedéclaré sans examiner le contenu de la réponse. En particulier, il empêche un navigateur de traiter une réponse commetext/htmllorsqu'elle est chargée dans un contexte de navigation et que l'en-têteContent-Typeest absent ou indique un type non HTML.
Spécifications
| Spécification |
|---|
| Fetch> # x-content-type-options-header> |
Compatibilité des navigateurs
Voir aussi
- L'en-tête
Content-Type - La définition originale (angl.) de
X-Content-Type-Optionspar Microsoft. - Utilisez l'observatoire HTTP pour tester la configuration de sécurité des sites Web (y compris cet en-tête).
- Atténuer les attaques de confusion MIME dans Firefox (angl.)