372 votes

Qu'est-ce que "X-Content-Type-Options=nosniff" ?

J'effectue des tests de pénétration sur mon serveur local avec OWASP ZAP, et le message suivant s'affiche en permanence :

L'en-tête Anti-MIME-Sniffing X-Content-Type-Option 'nosniff'

Cette vérification est spécifique à Internet Explorer 8 et Google Chrome. Assurez-vous que chaque page définit un en-tête Content-Type et que l'en-tête X-CONTENT-TYPE-OPTIONS si l'en-tête Content-Type est inconnu.

Je n'ai aucune idée de ce que cela signifie, et je n'ai rien trouvé en ligne. J'ai essayé d'ajouter :

<meta content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff" http-equiv="Content-Type" />

mais je reçois toujours l'alerte.

Quelle est la manière correcte de régler le paramètre ?

4voto

user5783745 Points 1214

Une explication très simple que j'ai trouvée utile : l'en-tête de réponse nosniff est un moyen de sécuriser un site web.

Par le chercheur en sécurité Scott Helme, ici :

Il empêche Google Chrome et Internet Explorer d'essayer de renifler le type de contenu d'une réponse à partir de celui qui est déclaré par le serveur.

2voto

Hans T Points 73

Je voudrais juste donner quelques précisions sur la question des métabalises. J'ai entendu une conférence où l'on disait qu'il fallait toujours insérer la balise méta "no-sniff" dans le code HTML pour empêcher le reniflage du navigateur (comme l'a fait l'OP) :

<meta content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff" http-equiv="Content-Type" />

Cependant, ce n'est pas une méthode valide pour les sites web conformes à la norme w3c, le validateur soulèvera une erreur :

Bad value text/html; charset=UTF-8; X-Content-Type-Options=nosniff for attribute content on element meta: The legacy encoding contained ;, which is not a valid character in an encoding name.

Et il n'y a pas de solution. Pour désactiver correctement la fonction "no-sniff", il faut aller dans les paramètres du serveur et la désactiver là. En effet, l'option "no-sniff" concerne l'en-tête HTTP et non le fichier HTML qui est joint à la réponse HTTP.

Pour vérifier si l'option no-sniff est désactivée, on peut activer la console de développement, l'onglet réseaux et inspecter l'en-tête de la réponse HTTP :

Visualization of enabled no-sniff option

1voto

blessed Points 121

Empêcher le reniflage de contenu lorsqu'aucun type d'image n'est envoyé

Configuration sur Ubuntu 20.04 - apache 2.4.41 :

Activer le module d'en-tête $ sudo a2enmod headers

Editer le fichier /etc/apache2/conf-available/security.conf et ajouter :

Header always set X-Content-Type-Options: nosniff

Activer la configuration $ sudo a2enconf security.conf

Redémarrer Apache $ sudo systemctl restart apache2

$ curl -I localhost

HTTP/1.1 200 OK
Date: Fri, 23 Oct 2020 06:12:16 GMT
Server:  
X-Content-Type-Options: nosniff
Last-Modified: Thu, 22 Oct 2020 08:06:06 GMT

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X