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é.
À 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 🙂
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 !
Partager la publication "Protéger un peu plus son site avec la balise X-Content-Type-Options"