cybercursus

XSS réfléchie : injecter via l'URL

10 min · Débutant · 7 août 2026

Sommaire
  1. Le trajet d’une XSS réfléchie
  2. Pourquoi « réfléchie »
  3. La démonstration

Le trajet d’une XSS réfléchie

Imagine une page de résultats de recherche qui affiche le terme recherché, extrait directement de l’URL :

text
https://exemple.test/recherche?q=injection+sql

Si le serveur insère la valeur de q dans la page sans l’échapper, la page générée ressemble à :

text
<p>Résultats pour : injection sql</p>

Un attaquant qui contrôle la valeur de q contrôle donc une partie du HTML renvoyé. Il ne lui reste qu’à convaincre une victime de cliquer sur un lien contenant sa charge :

text
https://exemple.test/recherche?q=<img src=x onerror="voleSession()">

Pourquoi « réfléchie »

Le serveur ne fait que refléter (renvoyer) la valeur reçue, sans jamais la conserver. C’est ce qui distingue cette famille des deux autres : rien n’est stocké, la charge n’existe que le temps de cette requête précise, et seule une personne qui clique sur le lien piégé est affectée.

Info

C’est aussi ce qui rend une XSS réfléchie plus difficile à exploiter à grande échelle qu’une XSS stockée : il faut convaincre chaque victime de cliquer sur un lien spécifique, souvent via un e-mail ou un message trompeur.

La démonstration

Le bac à sable ci-dessous simule ce que fait le serveur une fois la requête reçue : il prend une valeur (représentant le paramètre q déjà extrait de l’URL) et l’insère directement dans la page.

html
<!-- HTML -->
<p>Resultats de recherche pour : <span id="zone"></span></p>

// JS
// Simule le parametre "q" deja extrait de l'URL par le serveur,
// puis reinjecte tel quel dans la page (c'est la faille)
const parametreRecu = "<img src=x onerror=\"console.log('XSS reflechie executee')\">";
document.getElementById('zone').innerHTML = parametreRecu;

Modifie parametreRecu pour construire ta propre charge. Tant que le serveur (ici simulé) ne fait aucune vérification, n’importe quelle valeur atteint la page telle quelle.

D'où vient la donnée non fiable dans une XSS réfléchie ?
Pourquoi une XSS réfléchie nécessite-t-elle une action de la victime (cliquer sur un lien) ?

Pour aller plus loin

Commentaires

Recherche