Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

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, ou text/css pour 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-Type fourni tel quel au lieu d'examiner le contenu pour en déduire le type. Par exemple, si un serveur envoie une réponse avec Content-Type: text/plain et X-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

http
X-Content-Type-Options: nosniff

Directives

nosniff

Bloque une requête si sa destination est de type style et que le type MIME n'est pas text/css, ou de type script et 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-Type déclaré sans examiner le contenu de la réponse. En particulier, il empêche un navigateur de traiter une réponse comme text/html lorsqu'elle est chargée dans un contexte de navigation et que l'en-tête Content-Type est absent ou indique un type non HTML.

Spécifications

Spécification
Fetch
# x-content-type-options-header

Compatibilité des navigateurs

Voir aussi