Google demande aux sites d'ajouter un en-tête de réponse NoSniff

Google a publié une mise à jour de sécurité dans Chrome et a demandé aux développeurs Web de fournir un en-tête de réponse Nosniff pour aider à prévenir les piratages via les navigateurs Web.

Google demande aux sites d'ajouter un en-tête de réponse NoSniff

Ce problème est important si vous êtes un SEO, un développeur Web, Web Designer ou éditeur de site.

Il y a une myriade d'aspects à considérer lorsque vous cherchez à sécuriser un site, et les en-têtes HTTP sont un bon point de départ.

La plupart d'entre eux ne sont pas vraiment compliqués à implémenter. Suivre les meilleures pratiques des en-têtes de sécurité http fournit une autre couche de sécurité au-dessus de vos ressources Web.


C’est quoi les en-têtes de sécurité HTTP ?


Lorsqu'un utilisateur tente d'accéder à une page, son navigateur la demande à partir d'un serveur Web. 

Le serveur répond ensuite avec le contenu ainsi que les en-têtes de réponse HTTP appropriés qui contiennent des métadonnées, des codes d'erreur d'état, des règles de cache et ainsi de suite.

Un grand sous-ensemble de ces en-têtes concerne des en-têtes de sécurité qui instruisent votre navigateur Web exactement sur comment se comporter quand il manipule le contenu et les données de votre site Web.


Que fait la mise à jour de Chrome


La nouvelle mise à jour de sécurité de Chrome est très importante.

En effet, les attaques (Spectre et Meltdown) exploitent les vulnérabilités dans l’appareil d'un visiteur pour voler des informations sensibles comme les mots de passe. Ce qui pose un problème d'expérience utilisateur.

Chrome a donc été mis à jour vers la version 67. Il introduit une fonctionnalité qui était précédemment en version Bêta appelé “Isolation du site”.

L'isolation du site est une méthode pour empêcher une attaque sur le navigateur d'un visiteur du site.

Selon la page Chromium Projects de Google :

L'isolation du site est une fonctionnalité de sécurité dans Chrome qui offre une protection supplémentaire contre certains types de bugs de sécurité. Il est plus difficile pour les sites Web non fiables d'accéder ou de voler des informations de vos comptes sur d'autres sites Web.

Les sites Web ne peuvent généralement pas accéder aux données d’un autre site à l'intérieur du navigateur Web, grâce au code qui applique la même stratégie d'origine.

Occasionnellement, des bugs de sécurité sont trouvés dans ce code et des sites Web malveillants peuvent essayer de contourner ces règles pour attaquer d'autres sites Web.

L'isolation du site offre une deuxième couche de défense pour que de telles attaques soient moins susceptibles de réussir.

Il s'assure que les pages de différents sites Web soient toujours mises dans des processus différents, chacun fonctionnant dans un sandbox (bac à sable) qui limite ce que le processus est autorisé à faire.

Il permettra également de bloquer le processus de recevoir certains types de données sensibles à partir d'autres sites.

En conséquence, un site Web malveillant aura plus de mal à voler des données d'autres sites, même s’il peut forcer certaines des règles dans son propre processus.



Ce que Google veut que vous fassiez rapidement


Il y a 2 choses que l’équipe de Google Chrome demande aux développeurs et aux éditeurs de sites de faire afin d'aider la fonctionnalité d’Isolation du site de fonctionner plus efficacement :

  1. Vérifiez que les ressources sont servies avec des en-têtes de réponse “Content-type” corrects.

  2. Et que les ressources sont servies avec un en-tête de réponse Nosniff.

    Voici ce que la page des développeurs de Google propose :

    Pour les ressources HTML, JSON et XML :

    Assurez-vous que ces ressources sont servies avec un en-tête de réponse «Content-type» correct dans la liste ci-dessous, ainsi qu'un en-tête de réponse «X-Content-type-options: nosniff».

    Ces en-têtes assurent que Chrome peut identifier les ressources comme nécessitant une protection, sans dépendre du contenu des ressources :

    Type MIME html – "text/html"

    Type MIME XML – "Text/XML", "application/XML" ou tout type MIME dont le sous-type se termine par "+ XML"

    Type MIME JSON – "Text/JSON", "application/JSON" ou tout type MIME dont le sous-type se termine par "+ JSON"


C'est quoi l'en-tête de réponse Nosniff ?


L'en-tête de réponse nosniff (Nosniff Response Header) est un moyen de maintenir un site Web plus sécurisé en empêchant le reniflage.

Chrome 67 a maintenant un processus automatisé pour protéger les utilisateurs contre les attaques Spectre et Meltdown.

Cependant, Google recommande que les développeurs Web ne se fient pas uniquement à ce processus automatique, mais prennent des mesures pour le rendre clair avec l'en-tête de réponse nosniff :

... Lorsque l'en-tête “Nosniff " n'est pas présent, Chrome vérifie d'abord le début du fichier pour essayer de confirmer s'il s'agit de HTML, XML ou JSON, avant de décider s'il faut le protéger.

S'il ne peut pas le confirmer, il permet de recevoir la réponse par le processus de la page inter-sites.

C’est la meilleure approche d’effort qui ajoute une certaine protection limitée tout en préservant la compatibilité avec les sites existants.

Nous recommandons aux développeurs Web d'inclure l'en-tête «Nosniff» pour protéger leurs ressources, afin d'éviter de recourir à cette approche de «détection de confirmation».

D’après Google, dans Chrome 67, l'isolation du site a été activée pour 99% des utilisateurs sous Windows, Mac, Linux et Chrome OS.

Cela signifie que même si une attaque Spectre devait se produire dans une page Web malveillante, les données provenant d'autres sites Web ne seraient généralement pas chargées dans le même processus, et donc il y aurait beaucoup moins de données disponibles pour l'attaquant.

Cela réduit sensiblement la menace posée par Spectre.


Comment ajouter l'en-tête de réponse Nosniff ?


La première chose à faire est de vérifier vos en-têtes de sécurité.

SecurityHeaders.com est un outil gratuit et facile à utiliser qui scanne les sites Web pour voir s’il manque les en-têtes liées à la sécurité.

Si vous devez implémenter un en-tête de réponse Nosniff, une façon est d'utiliser .htaccess. Voici le code htaccess pour l'en-tête de réponse Nosniff :

 Header set X-Content-Type-Options nosniff 


Comment ajouter Nosniff Response Headers sur WordPress ?


Si vous avez un site ou un blog WordPress, Searchenginejournal propose 3 plugins qui peuvent être utilisés pour ajouter plusieurs en-têtes de sécurité importants, y compris l'en-tête Nosniff. 

  1. Le premier s’appelle “Security Headers”. Il s'agit d'un plugin facile à utiliser avec des paramètres minimaux mais fait une seule chose et le fait bien.

  2. Le deuxième plugin s’appelle “HTTP Headers to Improve Security”.

    Ce plugin contient plus de fonctionnalités pour renforcer votre sécurité, y compris la définition d'un en-tête CSP (Content-Security-Policy) qui permet de prévenir le Cross site Scripting et Clickjacking.

  3. Le troisième plugin WordPress est “HTTP Headers”.

    Il est complet et facile à utiliser. Il établit un équilibre entre la facilité d'utilisation et l'exhaustivité.


Utilisez votre propre jugement et choisissez ce qui vous convient.

Remarque : Si vous utilisez le plugin W3 Total Cache, assurez-vous de vider votre cache après avoir mis à jour les paramètres sur un plugin. Sinon, les paramètres peuvent ne pas prendre effet.

Pour tout autre site : vous pouvez utiliser le bout de code ci-dessous à installer dans le “Head” de votre code source :

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



Comment activer l'isolation des sites dans votre navigateur ?


Lorsque vous activez l'option "Isolation des sites", Chrome offre un niveau de sécurité supplémentaire à votre navigateur.

Chrome charge chaque site Web en exécutant son propre processus. Ainsi, même si un site contourne la règle relative à l'origine identique, le niveau de sécurité supplémentaire empêchera le site de voler vos données depuis un autre site Web.

  1. Sur votre ordinateur, ouvrez Chrome.

  2. Dans la barre d'adresse en haut de l'écran, saisissez chrome://flags/#enable-site-per-process, puis appuyez sur la touche "Entrée".

  3. À côté de l'option "Isolation des sites stricte", cliquez sur “Activer” (Enabled).

    Si l'option "Isolation des sites stricte" ne s'affiche pas, mettez Chrome à jour.

  4. Cliquez sur “Relancer maintenant”.

    Mais attention, enregistrez ce que vous faisiez dans les autres onglets ou fenêtres avec de relancer Chrome.

Plus d’info ici.