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

291

Je fais des tests de pénétration sur mon hôte local avec OWASP ZAP, et il continue de signaler ce message:

L'en-tête Anti-MIME-Sniffing X-Content-Type-Options n'était pas défini sur «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 les 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 bonne façon de régler le paramètre?

Koffeehaus
la source

Réponses:

178

Il empêche le navigateur d'effectuer un reniflement de type MIME. La plupart des navigateurs respectent désormais cet en-tête, y compris Chrome / Chrome, Edge, IE> = 8.0, Firefox> = 50 et Opera> = 13. Voir:

https://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx?Redirected=true

L'envoi du nouvel en-tête de réponse X-Content-Type-Options avec la valeur nosniff empêchera Internet Explorer de renifler MIME une réponse loin du type de contenu déclaré.

ÉDITER:

Oh, et c'est un en-tête HTTP, pas une option de balise META HTML.

Voir également: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx

Rémi Gacogne
la source
22
Vous devez mentionner que c'est for servers hosting untrusted content. Pour les sites Web qui n'affichent pas le contenu des téléchargements des utilisateurs, vous n'avez pas besoin de le définir.
machineaddict
12
@machineaddict, Mauvais . Le reniflement se produira, que le contenu soit fiable ou non. Voir security.stackexchange.com/a/11761/2379 . Cela cassera votre site de manière subtile. Désactivez toujours le reniflement si vous n'aimez pas les surprises.
Pacerier
33
Je pense que vous avez raté la partie "Qu'est-ce que le reniflement de type MIME?"
VarunAgw
3
firefoxprend également en charge cet en-tête: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
VasiliNovikov
«Enforcer» l'en-tête pourrait être interprété comme «exigeant», je l'ai changé en «respectant».
Charlie
136

La description

Définir l' X-Content-Type-Optionsen-tête de réponse HTTP d' un serveur pour nosniffindiquer aux navigateurs de désactiver le contenu ou le reniflement MIME qui est utilisé pour remplacer les en- Content-Typetêtes de réponse pour deviner et traiter les données à l'aide d'un type de contenu implicite. Bien que cela puisse être pratique dans certains scénarios, cela peut également conduire à certaines attaques répertoriées ci-dessous. La configuration de votre serveur pour renvoyer le X-Content-Type-Optionsjeu d'en-têtes de réponse HTTP nosniffdemandera aux navigateurs qui prennent en charge le reniflement MIME d'utiliser le serveur fourni Content-Typeet de ne pas interpréter le contenu comme un type de contenu différent.

Prise en charge du navigateur

L' X-Content-Type-Optionsen-tête de réponse HTTP est pris en charge dans Chrome, Firefox et Edge ainsi que dans d'autres navigateurs. La dernière prise en charge du navigateur est disponible sur le tableau de compatibilité du navigateur Mozilla Developer Network (MDN) pour X-Content-Type-Options:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options

Attaques contrées

  1. MIME Confusion Attack permet des attaques via des sites de contenu généré par l'utilisateur en permettant aux utilisateurs de télécharger du code malveillant qui est ensuite exécuté par des navigateurs qui interpréteront les fichiers en utilisant d'autres types de contenu, par exemple impliciteapplication/javascriptou explicitetext/plain. Cela peut entraîner une attaque de «téléchargement par lecteur» qui est un vecteur d'attaque commun pour le phishing. Les sites qui hébergent du contenu généré par les utilisateurs doivent utiliser cet en-tête pour protéger leurs utilisateurs. Ceci est mentionné par VeraCode et OWASP qui dit ce qui suit:

    Cela réduit l'exposition aux attaques de téléchargement en voiture et aux sites proposant du contenu téléchargé par les utilisateurs qui, par une dénomination intelligente, pourraient être traités par MSIE comme des fichiers HTML exécutables ou dynamiques.

  2. Le hotlinking non autorisé peut également être activé enContent-Typereniflant. En créant des liens vers des sites avec des ressources dans un but, par exemple la visualisation, les applications peuvent s'appuyer sur le reniflement de type de contenu et générer beaucoup de trafic sur des sites à d'autres fins où cela peut être contraire à leurs conditions de service, par exemple, GitHub affiche le code JavaScript pour la visualisation, mais pas pour l'exécution:

    Certains utilisateurs non humains embêtants (à savoir les ordinateurs) ont utilisé des ressources de «hotlinking» via la fonction d'affichage brut - en utilisant l'URL brute comme balise srcfor a <script>ou <img>. Le problème est que ce ne sont pas des actifs statiques. La vue du fichier brut, comme toute autre vue dans une application Rails, doit être rendue avant d'être retournée à l'utilisateur. Cela ajoute rapidement un lourd tribut aux performances. Dans le passé, nous avons été contraints de bloquer le contenu populaire diffusé de cette manière car cela mettait une pression excessive sur nos serveurs.

Grokify
la source
Qui a pensé que décider d'ignorer un type de contenu explicite et d'utiliser des devinettes serait une bonne idée? omg ...
Sam Sirry
105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Cet en-tête empêche les attaques basées sur le "mime". Cet en-tête empêche Internet Explorer de renifler MIME une réponse à l'écart du type de contenu déclaré car l'en-tête indique au navigateur de ne pas remplacer le type de contenu de la réponse. Avec l'option nosniff, si le serveur dit que le contenu est text / html, le navigateur le rendra en text / html.

http://stopmalvertising.com/security/securing-your-website-with-.htaccess/.htaccess-http-headers.html

Won Jun Bae
la source
1
Cela ne devrait-il pas toujours être le cas?! Je trouve bizarre qu'un navigateur essaie d'agir "intelligemment" et ignore un en-tête de type de contenu explicite.
Sam Sirry
25

Pour les serveurs Microsoft IIS, vous pouvez activer cet en-tête via votre web.configfichier:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options"/>
        <add name="X-Content-Type-Options" value="nosniff"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>

Et vous avez terminé.

Entrez
la source
3
Il est également possible de définir des en-têtes personnalisés dans IIS, mais votre solution est meilleure car elle peut être contrôlée par la source plutôt que gérée par la configuration.
ajeh
9

L'en-tête HTTP de réponse X-Content-Type-Options est un marqueur utilisé par le serveur pour indiquer que les types MIME publiés dans les en-têtes Content-Type ne doivent pas être modifiés et suivis. Cela permet de désactiver le reniflement de type MIME ou, en d'autres termes, c'est une façon de dire que les webmasters savaient ce qu'ils faisaient.

Syntaxe:

Options de type de contenu X: nosniff

Directives:

nosniff Bloque une demande si le type demandé est 1. "style" et le type MIME n'est pas "text / css", ou 2. "script" et le type MIME n'est pas un type JavaScript MIME.

Remarque: nosniff ne s'applique qu'aux types "script" et "style". L'application de nosniff aux images s'est également révélée incompatible avec les sites Web existants.

Spécification :

https://fetch.spec.whatwg.org/#x-content-type-options-header

Sahil Aggarwal
la source