Protéger votre site des attaques XSS avec l'en-tête X-XSS-Protection

Je vous ai proposé dernièrement plusieurs tutoriels pour activer certains mécanismes de protection à travers les en-têtes de trames HTTP. C'est bien et cela m'a déjà permis d'améliorer la sécurité du site JusteGeek comme vous avez déjà pu le voir à travers mes précédents tutos. Mais c'est pas fini. Il existe encore d'autres mécanismes que l'on peut implémenter. Et dans ce tutoriel, je vais vous parler des attaques de type XSS et de l'en-tête  X-XSS-Protection. Après cela, le C obtenu par le site sur Security Headers ne sera plus qu'un lointain souvenir... 🙂

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

 

Qu'est ce qu'une attaque XSS ?

Pour comprendre le mécanisme que nous allons mettre en place ici, il est important de savoir de quoi on parle et donc de savoir ce qu'est une attaque XSS, également appelée cross-site scripting. Une attaque XSS consiste en fait à exploiter une faille pour injecter du code HTML ou JavaScript dans des variables mal protégées d'un site web. L'attaque peut être réalisée de manière unitaire, c'est à dire que le pirate l’exécute une seule fois, en envoyant un formulaire par exemple, ou bien elle peut carrément être stockée dans un fichier ou en base de données pour être rejouée à chaque visite d'une page... Et oui vous imaginez bien ici la dangerosité de la chose.

Je ne vais pas ici vous faire un cours complet sur les failles XSS car ce n'est pas le but de ce billet, mais si vous voulez en apprendre davantage sur ce sujet, je vous renvoie au cours d'Openclassroom qui l'expliquera bien mieux que moi.

 

Comment fonctionne l'en-tête X-XSS-Protection ?

L'en-tête X-XSS-Protection permet d'activer la protection contre les attaques XSS incluse dans les navigateurs Internet compatibles (IE, Chrome, Safari...).  Cette en-tête peut prendre 4 valeurs différentes :

  • 0 : le filtrage XSS est désactivé
  • 1 : le filtrage XSS est activé et le navigateur essaie de nettoyer le code, si besoin
  • 1; mode=block : le filtrage est activé et le navigateur bloque le rendu de la page si une tentative d'attaque de type XSS est détectée
  • 1; report=<reporting-URI> : le filtrage XSS est activé et le navigateur nettoie le code, si besoin, et envoie un rapport à l'adresse définie

La troisième possibilité est bien évidemment la plus sécurisée car plus radicale. C'est pour ma part l'option que j'ai choisi d'implémenter. Sauf erreur de ma part, la quatrième possibilité n'est compatible qu'avec Chromium.

Il faut bien comprendre que l'en-tête X-XSS-Protection n'est pas LA solution ultime et que l'implémenter ne vous mettra pas totalement à l'abri des attaques de type Cross-Site Scripting. Mais cela constitue un petit plus dont il serait dommage de se priver !

 

Implémenter l'en-tête X-XSS-Protection sur son site web

La mise en place de l'en-tête X-XSS-Protection peut être réalisée au niveau du site Internet, via le fichier htaccess, ou bien au niveau du serveur web, via les fichiers de configuration de celui-ci. J'ai pour ma part décidé d'implémenter cela directement sur mon serveur web afin que les différents sites portés par celui-ci bénéficient de cette en-tête. Pour cela, il suffit d'éditer le fichier /etc/apache2/conf-available/security.conf et d'y ajouter la ligne suivante :

Header set X-XSS-Protection "1; mode=block"

Ensuite, un petit redémarrage du serveur web est nécessaire pour que cela soit pris en compte :

systemctl restart apache2

 

Si l'on souhaite le faire au niveau du site Internet, il suffit de configurer la section mod_headers de son fichier htaccess comme ceci :

<IfModule mod_headers.c>

Header set X-XSS-Protection "1; mode=block"

</IfModule>

 

Conclusion

Et voilà ! L'en-tête X-XSS-Protection est en place. Un nouveau check du site sur SecurityHeaders et hop, JusteGeek.fr obtient désormais la note B ! Classe non ? On se rapproche petit à petit du A ! 🙂

JusteGeek.fr passé de C à B grâce à la mise en place de l'en-tête X-XSS-Protection

JusteGeek.fr passé de C à B grâce à la mise en place de l'en-tête X-XSS-Protection

 

Et si tu n'as pas vu mes précédents tutoriels sur les différents mécanismes à mettre en place dans les en-têtes de trame, fonce vite les consulter :

 

Sandstorm

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.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie 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.