La sécurité Web, vue via les entêtes du navigateur – Episode 2 – L’entete X-Content-Type-Options

Suite des épisodes sur les entêtes intéressantes à rajouter à vos applications, Web. Aujourd’hui nous allons parler de X-Content-Type-Options

Toute page envoyée depuis un serveur vers un client Web, doit convertir ses données dans le bon type MIME. Ce type MIME est normalement associé à une entête technique nommée content-type décrivant le type de données renvoyées (image, script, …).

Dans Internet Explorer et aussi dans Chrome , il existe une fonctionnalité permettant d’effectuer du « changement  de type MIME à la volée ». Cette fonctionnalité permet au navigateur d’effectuer un changement de type, en fonction du contenu, sans pour autant s’en tenir à ce que renvoie le serveur dans l’entête « content-type ».  Cette fonctionnalité semble avoir été ajoutée pour des raisons très obscures du a des « serveurs renvoyant des types de contenu text/plain contenant du HTML… ».

Cette fonctionnalité, bien que très pratique pour le rendu visuel, peut dans certains cas conduire à des problématiques de sécurité.

Si je dispose d’un élément HTML de ce type

http://«.

et si le contenu du fichiermonimage.js n’est pas du code JavaScript, alors dans le cas ou l’entête est positionnée à  la valeur suivante : X-Content-Type-Options: nosniff, le navigateur n’effectuera pas une tentative de changement d’interprétation du contenu et ne chargera pas le moteur d’interprétation JavaScript. Il passera à l’élément HTML suivant.

Contrôle de la mise en place de l’entête

  • Dans le cas ou vous  utilisez un outil tel que OWASP Zap vous aurez une remontée de l’oubli de cet entête lors de vos analyses

Implémentation de l’entête :

Plusieurs solutions sont possibles.

Vous disposez du module mod_headers d’apache, il suffit d’ajouter les lignes suivantes :

<IfModule mod_headers.c> 
Header set X-Content-Type-Options nosniff 
</IfModule>

Vous n’avez pas ce module, ou vous souhaitez le « coder » : En java :

response.addHeader("X-Content-Type-Options", "nosniff");

En PHP :

<?php header(‘X-Content-Type-Options : nosniff’); ?>

En C#

HttpResponse.AddHeader(« X-Content-Type-Options », « nosniff »);

 

 

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s