Se rendre au contenu

XSS (Cross-Site Scripting) : comprendre le risque

Le XSS est l'une des vulnérabilités les plus répandues du web. Son principe : faire exécuter du code malveillant dans le navigateur d'une victime, au sein d'un site pourtant légitime. Les conséquences vont du désagrément au vol de compte.

Qu'est-ce qu'une attaque XSS ?

Une faille XSS permet à un attaquant d'injecter du code (généralement du JavaScript) qui sera exécuté par le navigateur d'autres utilisateurs. Le navigateur fait confiance au site : il exécute donc le code malveillant comme s'il provenait de l'application légitime.

À partir de là, l'attaquant peut voler un cookie de session, agir à la place de la victime, modifier l'affichage de la page ou la rediriger. Le XSS est souvent le point de bascule vers un vol de compte, et un grand classique des tests d'intrusion applicatifs.

Les grands types de XSS

XSS réfléchi

Le code malveillant est renvoyé immédiatement par le serveur, à partir d'un paramètre de la requête. Il faut piéger la victime pour qu'elle ouvre un lien spécialement forgé.

XSS stocké

Le code est enregistré côté serveur (commentaire, profil, message) puis servi à tous les visiteurs de la page. Le plus dangereux : aucune action spécifique de la victime n'est requise.

XSS basé sur le DOM

L'exécution se joue entièrement côté navigateur : un script de la page manipule une donnée contrôlée par l'utilisateur (souvent l'URL) sans passer par le serveur.

Un vecteur d'ingénierie sociale

Le XSS s'appuie fréquemment sur un lien piégé envoyé par phishing pour amener la victime à déclencher l'exécution du code.

Quels impacts pour votre organisation ?

Un XSS bien exploité permet de voler des sessions (et donc des comptes, parfois même protégés par double authentification le temps de la session), de détourner des actions au nom de la victime, ou de défigurer des pages. Sur un compte à privilèges, l'impact peut être critique. C'est pourquoi le XSS se traite à la fois par du code sûr et par des protections complémentaires comme la Content Security Policy (CSP).

Le principe de défense : encoder en sortie, valider en entrée

La protection de référence consiste à encoder les données en sortie, selon le contexte d'affichage (HTML, attribut, JavaScript, URL), de sorte qu'une donnée utilisateur ne puisse jamais être interprétée comme du code. On y ajoute la validation des entrées, l'usage de frameworks qui échappent par défaut, des cookies de session en HttpOnly, et une CSP bien réglée comme filet de sécurité. Ces protections se valident par un test d'intrusion.

Se protéger, étape par étape

1

Encoder les données en sortie

Adapter l'encodage au contexte d'affichage pour neutraliser tout contenu actif inséré par un utilisateur.

2

Valider les entrées

Contrôler format et contenu des données reçues, en complément (jamais en remplacement) de l'encodage en sortie.

3

S'appuyer sur le framework

Utiliser des moteurs de rendu qui échappent par défaut et éviter les constructions HTML « à la main » à partir de données utilisateur.

4

Protéger les cookies

Déclarer les cookies de session en HttpOnly pour limiter l'exfiltration de session via un script injecté.

5

Déployer une CSP

Une Content Security Policy bien configurée limite l'exécution de scripts non autorisés.

6

Tester et auditer

Un pentest et des audits réguliers révèlent les points d'injection résiduels.

Pourquoi se faire accompagner par BCIT ?

Des tests réalistes

Nous recherchons les XSS réfléchis, stockés et DOM sur vos applications, dans leurs contextes réels.

Des correctifs applicables

Des recommandations concrètes, adaptées à vos technologies et priorisées par impact.

Une vision d'ensemble

De la sécurité applicative aux audits, nous couvrons toute la chaîne.

Pas encore prêt à échanger ? Découvrez notre diagnostic cybersécurité →

Reprenez la main sur ce qui s'exécute chez vos utilisateurs

Prenons 15 minutes pour évaluer l'exposition de vos applications au XSS et définir les mesures de protection prioritaires.