Attaque
Cross-site scripting
Aussi appeléXSSInjection de script intersites
En résumé
Une vulnérabilité qui permet d’injecter du code JavaScript dans une page web consultée par d’autres utilisateurs. Le script s’exécute dans leur navigateur avec les droits de leur session et peut lire des données affichées, agir en leur nom ou rediriger vers un site contrôlé par l’attaquant.
Cross-site scripting, en détail
On distingue trois familles. Le XSS stocké persiste dans l’application, par exemple dans un commentaire ou un nom de profil, et touche tous ceux qui consultent la page. Le XSS réfléchi est déclenché par un lien piégé qui renvoie la valeur d’un paramètre dans la réponse. Le XSS basé sur le DOM se produit entièrement dans le navigateur, quand le code JavaScript de la page insère des données non fiables dans la page de façon dangereuse.
Le script s’exécute avec l’origine du site légitime : il accède donc à tout ce que l’utilisateur voit, peut émettre des requêtes authentifiées à sa place et, si les cookies de session ne sont pas marqués HttpOnly, les lire. Dans une interface d’administration, un XSS stocké déclenché par un opérateur peut conduire à la prise de contrôle d’un compte privilégié. La défense s’organise en couches : encoder les données à l’affichage selon leur contexte (HTML, attribut, JavaScript, URL), utiliser des frameworks qui échappent par défaut, déclarer une politique de sécurité : définition du contenu (CSP) qui restreint les scripts autorisés, et marquer les cookies de session HttpOnly et SameSite. Aucune couche seule ne suffit, mais ensemble elles limitent fortement l’impact.
Qu’est-ce que cela change pour vous ?
Un XSS sur une application métier est un vecteur d’attaque contre vos propres utilisateurs et administrateurs. Son impact dépend moins du défaut lui-même que des droits de la session qu’il permet d’emprunter.
Exemple illustratif (fictif)
Par exemple, sur un outil de support, le champ « objet » d’un ticket est affiché sans encodage dans la console des agents. Un ticket ouvert depuis le formulaire public exécuterait alors un script dans la session d’un agent et permettrait de lire la liste des clients accessibles à cet agent.
La confusion fréquente
Considérer le XSS comme un défaut mineur parce qu’« il ne touche que le navigateur ». Le navigateur de la victime porte une session authentifiée : ce que le script peut faire dépend des droits de cette session.
Comment le détecter chez vous ?
- Pentest web : la prestationSavoir ce qu’un attaquant obtiendrait sur votre application.
- Audit de code : la prestationRetrouver la ligne de code responsable et la raison pour laquelle elle a été écrite.
Aller plus loin
- ArticleOWASP Top 10 : les dix risques expliqués pour décideurs et développeursLes dix catégories de risques de l’OWASP Top 10:2025 expliquées simplement : ce que chacune recouvre, comment un test d’intrusion la vérifie et ce que le classement ne dit pas.
- ArticleIDOR et BOLA : une faille coûteuse pour les plateformes SaaSPourquoi un simple identifiant modifiable figure en tête de l’OWASP API Security Top 10, pourquoi aucun scanner ne la trouve, et comment la supprimer par conception.
- ComparatifTest d’intrusion ou bug bounty : faut-il ouvrir un programme de primes ?Une mission cadrée et un programme de primes ont des modèles économiques opposés et des couvertures différentes. Ce que chacun apporte, ce qu’il suppose en interne, et quand l’un ne se justifie pas encore.
Termes liés
- AttaqueCSRF : définitionUne attaque qui pousse le navigateur d’un utilisateur connecté à envoyer, à son insu, une requête vers un site où sa session est ouverte.
- AttaqueInjection SQL : définitionUne vulnérabilité où des données saisies par l’utilisateur sont interprétées comme du code SQL par la base de données, faute de séparation entre la requête et ses paramètres.
- AttaqueÉlévation de privilèges : définitionL’obtention de droits supérieurs à ceux accordés au départ, soit en accédant à un rôle plus puissant (élévation verticale), soit en accédant aux ressources d’un autre utilisateur de même niveau (élévation horizontale).
- DéfenseDéfense en profondeur : définitionUne stratégie qui superpose plusieurs mesures de sécurité indépendantes, de sorte que la défaillance ou le contournement de l’une ne suffise pas à compromettre le système.
Réponse à toute demande sous 24 h ouvrées
Un périmètre à faire tester ?
Le cadrage est gratuit et sans engagement. Trente minutes suffisent à savoir si une mission est pertinente, laquelle, et ce qu’elle coûterait.
- Accord de confidentialité systématique
- Cadrage gratuit et sans engagement
- Périmètre et prix écrits avant le début