Aller au contenu principal
Security Headers Scanner
L'observatoire des en-têtes de
sécurité de vos sites internet
Analyses totales 15210
Score moyen 38,70
Sites analysés 2013
Meilleur score 155

X-Content-Type-Options (CTO)

Demander au navigateur de respecter le type de contenu annoncé par le serveur, au lieu d’essayer de l’interpréter autrement.

Comprendre X-Content-Type-Options

Lorsqu’un site envoie un fichier au navigateur, il indique normalement de quel type de contenu il s’agit : une page HTML, une feuille de style, un script JavaScript, une image ou un autre type de fichier.

Cette information permet au navigateur de savoir comment il doit traiter le contenu reçu.

X-Content-Type-Options permet de demander au navigateur de respecter strictement le type annoncé par le serveur et de ne pas essayer de l’interpréter comme autre chose.

Qu’est-ce qu’un type MIME ?

Le type de contenu est généralement indiqué grâce à une valeur appelée type MIME.

Quelques exemples :

text/html pour une page HTML
text/css pour une feuille de style CSS
application/javascript pour du JavaScript
image/jpeg pour une image JPEG

Pourquoi est-ce important ?

Historiquement, les navigateurs ont parfois essayé de compenser les erreurs de configuration des serveurs web.

Lorsqu’un serveur annonçait un mauvais type de contenu, le navigateur pouvait examiner le fichier et tenter de deviner lui-même sa véritable nature.

Ce comportement est souvent appelé MIME sniffing.

Le problème est qu’un contenu qui devait être considéré comme inoffensif pourrait alors être interprété comme du contenu exécutable. X-Content-Type-Options permet de réduire ce type de comportement inattendu.

Configurer X-Content-Type-Options

La configuration de cet en-tête est particulièrement simple :

X-Content-Type-Options: nosniff

La valeur nosniff demande au navigateur de ne pas essayer de deviner un autre type de contenu que celui annoncé par le serveur.

Contrairement à des mécanismes comme CSP ou Permissions-Policy, cet en-tête ne nécessite pas une longue liste de paramètres.

Pour un site web moderne, X-Content-Type-Options: nosniff doit être mis en place afin que le navigateur respecte les types de contenus déclarés.

Bien déclarer les types de contenus

Activer nosniff ne corrige pas automatiquement les erreurs de configuration du serveur.

Chaque ressource doit toujours être envoyée avec un Content-Type correspondant réellement à son contenu.

Exemple

Un fichier JavaScript devrait par exemple être annoncé comme du JavaScript, et non comme un simple fichier texte.

Si le serveur fournit un mauvais type et que nosniff est actif, le navigateur peut refuser d’utiliser la ressource.

Ce blocage est volontaire.
Si une ressource légitime cesse de fonctionner après l’activation de nosniff, il ne faut pas supprimer la protection : il faut corriger le type de contenu envoyé par le serveur.

Bonnes pratiques et limites

Bonnes pratiques

  • Envoyer X-Content-Type-Options: nosniff avec les réponses du site.
  • Vérifier que chaque ressource possède un Content-Type correspondant réellement à son contenu.
  • Ne pas compter sur le navigateur pour corriger automatiquement une mauvaise configuration du serveur.
  • Tester le site après l’activation de nosniff afin d’identifier les ressources éventuellement servies avec un mauvais type de contenu.

Ce que X-Content-Type-Options ne remplace pas

X-Content-Type-Options empêche certains comportements d’interprétation automatique, mais il ne contrôle pas l’ensemble des contenus qu’une page peut charger.

Pour définir précisément quelles sources sont autorisées à fournir des scripts, images, feuilles de style ou autres ressources, il faut notamment utiliser une Content-Security-Policy (CSP) correctement configurée.

Il ne remplace pas non plus :

  • la sécurité du code ;
  • une configuration correcte du serveur ;
  • HTTPS ;
  • les autres protections nécessaires au site.

X-Content-Type-Options est donc une protection simple à mettre en place et qui doit être activée afin de demander au navigateur de respecter strictement les types de contenus déclarés par le serveur.

À retenir : X-Content-Type-Options: nosniff demande au navigateur de respecter le type de contenu annoncé par le serveur.
Cela évite certaines interprétations inattendues et réduit le risque qu’un contenu soit traité comme exécutable alors qu’il ne devait pas l’être.