💎 PREMIUM: Wiki/Cross site scripting - Full Gallery 2025

Aller au contenu

Cross-site scripting

Un article de Wikipédia, l'encyclopédie libre.
Le diagramme de séquence d'une attaque de type cross-site scripting.

Le cross-site scripting (abrégé XSS) est un type de faille de sécurité des sites web permettant d'injecter du contenu dans une page, provoquant ainsi des actions sur les navigateurs web visitant la page. Les possibilités des XSS sont très larges puisque l'attaquant peut utiliser tous les langages pris en charge par le navigateur (JavaScript, Java...) et de nouvelles possibilités sont régulièrement découvertes notamment avec l'arrivée de nouvelles technologies comme HTML5. Il est par exemple possible de rediriger vers un autre site pour de l'hameçonnage ou encore de voler la session en récupérant les cookies.

Le cross-site scripting est abrégé XSS pour ne pas être confondu avec le CSS (feuilles de style)[1], X se lisant « cross » (croix, à travers) en anglais.

Définition

[modifier | modifier le code]

Le terme cross-site scripting n'est pas une description très précise de ce type de vulnérabilité. Mark Slemko, pionnier du XSS, en disait :

« Le problème n'est pas simplement le "scripting", et il n'y a pas forcément quelque chose entre plusieurs sites. Alors pourquoi ce nom ? En fait, le nom a été donné quand le problème était moins bien compris, et c'est resté. Croyez-moi, nous avions des choses plus importantes à faire que de réfléchir à un meilleur nom. »

— Mark Slemko, « Cross Site Scripting Info », sur The Apache HTTP Server Project,

Le principe est d'injecter des données arbitraires dans un site web, par exemple en déposant un message dans un forum, ou par des paramètres d'URL. Si ces données arrivent telles quelles dans la page web transmise au navigateur (par les paramètres d'URL, un message posté…) sans avoir été vérifiées, alors il existe une faille : on peut s'en servir pour faire exécuter du code malveillant en langage de script (du JavaScript le plus souvent) par le navigateur web qui consulte cette page.

La détection de la présence d'une faille XSS peut se faire par exemple en entrant un script Javascript dans un champ de formulaire ou dans une URL :

<script>alert('bonjour')</script>

Si une boîte de dialogue apparaît, on peut en conclure que l'application Web est sensible aux attaques de type XSS.

L'exploitation d'une faille de type XSS permettrait à un intrus de réaliser les opérations suivantes :

  • Redirection (parfois de manière transparente) de l'utilisateur (souvent dans un but d'hameçonnage)
  • Vol d'informations, par exemple sessions et cookies.
  • Actions sur le site faillible, à l'insu de la victime et sous son identité (envoi de messages, suppression de données…)
  • Rendre la lecture d'une page difficile (boucle infinie d'alertes par exemple).

Types de failles XSS

[modifier | modifier le code]

Il n'existe pas de classification standardisée des failles de cross-site scripting, mais l'on peut facilement distinguer deux types principaux de XSS : les non-persistants et les persistants. Il est aussi possible de diviser ces deux types en deux groupes : les XSS traditionnels (causés par une vulnérabilité côté serveur) et les XSS basés sur le DOM (dus à une vulnérabilité côté client)

XSS réfléchi (ou non permanent)