Protéger un peu plus son site avec la balise X-Content-Type-Options

Je continue ma série de tutoriels entamée la semaine dernière pour tenter d'améliorer toujours un peu plus la sécurité du site, étape par étape. Après avoir mis en place HSTS et X-Frame-Options on va s'attaquer aujourd'hui à la balise X-Content-Type-Options. Je vous rappelle qu'à ce stade, le site JusteGeek.fr obtenait une note de D au test proposé par le site SecurityHeaders. L'objectif final est d'atteindre un beau A, dans la mesure du possible bien sûr, car comme déjà évoqué, je ne suis pas expert en sécurité.

JusteGeek.fr passé de F à D grâce à la mise en place de HSTS

JusteGeek.fr passé de F à D grâce à la mise en place de HSTS

 

À quoi sert l'en tête X-Content-Type-Options ?

Pour comprendre à quoi sert l'en-tête X-Content-Type-Options il convient de comprendre déjà comment fonctionne une page web. Lorsqu'un serveur envoie une page web, il indique le type de données (script, image, etc.) via les types MIME au client afin que celui-ci interprète toutes ces données correctement. Ces types MIME sont intégrés dans des en-têtes content-type. Ces directives doivent être suivies par le client, c'est à dire le navigateur web qui a demandé la page. Or il existe une fonctionnalité sur les navigateurs actuels (Chrome, Internet Explorer...) qui permet de modifier les types MIME à la volée. Ainsi, le navigateur ne tient pas compte de la directive content-type envoyée par le serveur web et va modifier le type de données. Dès lors, on comprend que cette modification peut être dangereuse et constituer un risque : c'est ce qu'on appelle les attaques Drive-By-Download.

Pour se protéger de ce changement de types MIME à la volée par le client, il existe un en-tête de trame : il s'agit de la directive X-Content-Type-Options. Cette directive ne peut prendre qu'un seul paramètre : nosniff. Reste maintenant à voir comment l'implémenter.

 

Implémenter l'en-tête X-Content-Type-Options sur son site web

L'implémentation de l'en-tête X-Content-Types-Options est relativement simple. Ce paramétrage se passe au niveau de la configuration du serveur web. Pour ma part, mon serveur web est un serveur Apache, j'ai donc modifié le fichier security.conf se trouvant dans /etc/apache2/conf-available/ pour y ajouter la ligne ci-dessous :

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

Un petit redémarrage du serveur Apache est alors nécessaire :

systemctl restart apache2

 

Ce réglage peut aussi être implémenté via le fichier htaccess de votre site. Il faudra le positionner dans la section appropriée : mod_headers.

<IfModule mod_headers.c>

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

</IfModule>

 

Conclusion

L'implémentation de l'en-tête X-Content-Type-Options est donc relativement simple à mettre en place comme vous pouvez le voir. Il s'agit d'un petit effort à faire mais qui rajouter une pierre à l'édifice Sécurité de votre site web. Pour ma part, après avoir mis en place ce mécanisme, j'ai relancé le test du site SecurityHeaders et cette fois, j'ai obtenu un C ! On progresse donc petit à petit 🙂

JusteGeek.fr passé de D à C grâce à la mise en place de l'en-tête X-Content-Type-Options

JusteGeek.fr passé de D à C grâce à la mise en place de l'en-tête X-Content-Type-Options

Bien évidemment, l'aventure ne s'arrête pas là car il faut viser mieux qu'un petit C. Alors je vous proposerait dans quelques jours un autre tutoriel pour votre site web !

 

Sandstorm

Ingénieur Systèmes passionné d'informatique et de High-Tech, Sandstorm a créé JusteGeek.fr en 2013. Il aime les geekeries en tout genre. "Si un produit s'allume c'est un bon point. S'il est connecté, c'est encore mieux !"

Vous aimerez aussi...

3 réponses

  1. Denis Grugeon dit :

    Salut Sandstorm,
    Merci pour cet article qui m'éclaire un petit peu sur cette bonne pratique référencée par Opquast ici : https://checklists.opquast.com/fr/qualiteweb/les-en-tetes-envoyes-par-le-serveur-desactivent-la-detection-automatique-du-type-mime-de-chaque-ressource.
    Aurais-tu un exemple très concret de risque encouru (pour les non techniciens et MOA) ?
    Merci !

  2. Carole Couturier dit :

    Bonjour,
    Pas de fichier mod_headers ds le htaccess des sites que je gère, avez vous une astuce?
    merci par avance

    • Sandstorm dit :

      Hello Carole,
      Je n'ai pas trop compris ta réponse. htaccess est un fichier, tu peux y créer une section mod_headers dedans. Bien sur il faut que le module headers soit actif sur ton serveur web.
      ++

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.