Comment prévenir les attaques par script intersite (XSS)

Découvrez des méthodes efficaces pour prévenir les attaques par script intersite et assurer la sécurité de votre site web. Apprenez à vous protéger efficacement contre les vulnérabilités XSS.

Aug 3, 2023
13 minute read
eSecurity Planet Le contenu et les recommandations de produits sont indépendants de la rédaction. Nous pouvons gagner de l'argent lorsque vous cliquez sur des liens vers nos partenaires. En savoir plus

Les vulnérabilités de script intersite (XSS) sont beaucoup trop fréquentes sur les sites et applications web, ce qui offre aux pirates de nombreuses occasions de lancer des attaques XSS et de dérober des données utilisateur en introduisant des scripts destructeurs dans les pages en ligne.

Nous allons voir ici comment fonctionnent les attaques XSS, les principales mesures de programmation, de prévention et de sécurité, ainsi qu’une gamme de produits de sécurité des applications qui peuvent faciliter la prévention des attaques XSS.

Accéder directement à :

Comment fonctionne le script intersite (XSS) ?

Les attaques par script intersite surviennent lorsque des pirates tirent parti de pratiques de validation et d’encodage peu sûres dans les applications web pour injecter des scripts malveillants dans le navigateur d’une victime, ce qui peut entraîner la prise de contrôle d’un compte, la redirection vers un site malveillant ou d’autres activités nuisibles. Si un site web est vulnérable aux attaques XSS, les entrées de l’utilisateur sont exécutées comme du code.

Voici comment un attaquant crée puis injecte du code malveillant dans un site web vulnérable :

  1. Création du code malveillant : Après avoir trouvé un site web vulnérable grâce à l’analyse des vulnérabilités, à l’énumération des sous-domaines et à d’autres techniques, l’attaquant crée du code malveillant, généralement en JavaScript, pour exploiter les failles du site web cible.
  2. Injection de code : Après avoir préparé le code malveillant, l’attaquant l’injecte dans le site web vulnérable en modifiant un script exécutable avec du code malveillant.
  3. Déclenchement de l’attaque : Lorsqu’une personne consulte un site web qui a été piraté, le code malveillant s’exécute automatiquement dans son navigateur.
  4. Vol de cookies : Lorsque le code malveillant s’exécute, il peut dérober des jetons, des cookies et d’autres données sensibles de l’utilisateur.
  5. Accès illégal : Muni des données volées, l’attaquant accède à la session ou au compte de l’utilisateur sans autorisation.
Advertisement

Comment prévenir les attaques par script intersite

Heureusement, de bonnes pratiques de programmation peuvent réduire le risque d’attaques XSS. Voici quelques techniques de programmation et mesures préventives pour protéger vos applications web contre les attaques XSS. Vous pouvez renforcer la sécurité de votre site web et offrir une expérience utilisateur sûre en mettant en œuvre des techniques appropriées de validation des entrées et d’encodage des sorties.

Validation des variables

La validation des variables est une technique qui permet de déterminer si une entrée respecte les critères souhaités. Elle permet de réduire le risque que des informations malveillantes causent des dégâts dans votre application, en veillant à ce que seules des données sûres et correctement structurées soient transmises.

Utilisez par exemple des filtres ou des expressions régulières pour vérifier qu’une adresse e-mail ressemble à celle attendue d’un utilisateur. N’effectuez aucune opération délicate et informez l’utilisateur si elle ne respecte pas le format prévu.

Exemple en PHP :

//This code assumes we are receiving an email address input
$userEmail = $_POST['email'];

// Validate the email using a filter to ensure it's in a proper email format
if (filter_var($userEmail, FILTER_VALIDATE_EMAIL)) {
    // Email is valid, proceed with further processing
    // ...
} else {
    // Invalid email format, handle the error appropriately
    // ...
}

Encodage des sorties

Une autre façon de se protéger contre les attaques XSS consiste à encoder les sorties. Lorsque vous affichez du contenu dynamique sur votre site web, comme des commentaires ou des messages d’utilisateurs, vous devez l’encoder correctement avant de l’afficher en HTML. L’encodage consiste à convertir les caractères spéciaux en équivalents inoffensifs afin que le navigateur ne les interprète pas comme du code.

L’encodage garantit que les balises de script soumises par un utilisateur s’affichent comme du texte ordinaire au lieu d’être exécutées comme des scripts. OWASP propose une « fiche pratique » pour aider les développeurs à encoder de manière sûre ; nous avons repris quelques exemples de code ci-dessous.

Encodage des sorties pour les contextes HTML

Advertisement

Insérer une variable entre deux balises HTML élémentaires, par exemple :

<div> $varUnsafe </div>

pourrait permettre de modifier les données affichées sous la forme « $varUnsafe » afin d’ajouter une attaque à une page web. OWASP recommande l’encodage des entités HTML d’une variable lorsqu’elle est ajoutée à un modèle web, en utilisant des « points d’insertion sûrs », comme textContent, pour placer les variables.

Encodage des sorties pour le contexte des attributs HTML

Cette méthode ajoute des variables aux valeurs d’attributs HTML pour diverses fonctions, comme la modification d’hyperliens, la dissimulation d’éléments, l’ajout de textes alternatifs ou la modification du style.

Exemple :

<div attr="$varUnsafe">
<div attr="*x" onblur="alert(1)*"> // Example Attack

Les guillemets (” et ‘) sont difficiles à modifier à l’endroit où une variable intervient, ce qui contribue à prévenir les attaques XSS. Avec JavaScript, .setAttribute et [attribute] encodent automatiquement les attributs HTML et sont sécurisés avec des attributs HTML sûrs.

Encodage des sorties pour le contexte JavaScript

Les contextes JavaScript placent des variables dans du JavaScript intégré directement à un document HTML. Les variables destinées aux pages HTML doivent être placées dans une valeur de données entre guillemets pour des raisons de sécurité.

Exemple de « valeurs de données entre guillemets » :

<script>alert('$varUnsafe')</script>
<script>x='$varUnsafe'</script>
<div onmouseover="'$varUnsafe'"</div>

Les caractères doivent être encodés au format \xHH. OWASP propose un encodeur Java pour aider les développeurs. Pour JSON, l’en-tête Content-Type doit être application/json et non text/html.

Autres risques liés à l’encodage des sorties

Les variables placées dans du CSS intégré doivent l’être dans la valeur d’une propriété CSS. Ainsi, les utilisateurs peuvent facilement modifier l’apparence de leurs pages web sans compromettre la sécurité.

Les URL doivent être encodées, puis faire l’objet d’un encodage des attributs HTML. Lorsqu’un URL est construite en JavaScript, utilisez window.encodeURIComponent(x) pour encoder sa valeur de requête.

OWASP signale également plusieurs « contextes dangereux » qui restent peu sûrs même avec l’encodage des sorties, notamment :

  • <script>Directement dans un script</script>
  • <!– Dans un commentaire HTML –>
  • <style>Directement dans du CSS</style>
  • <div ToDefineAnAttribute=test />
  • <ToDefineATag href=”/test” />
  • Fonctions de rappel
  • URL traitées dans le code
  • Gestionnaires d’événements JavaScript (onclick(), onerror(), onmouseover()).
  • Fonctions JavaScript non sûres comme eval(), setInterval(), setTimeout()
Advertisement

Nettoyage du HTML 

Le nettoyage du HTML consiste à supprimer du HTML généré par l’utilisateur les scripts ou composants susceptibles d’être dangereux. Avant l’affichage des entrées utilisateur sur votre site web, le nettoyage du HTML agit comme un filet de sécurité en supprimant ou en neutralisant les risques potentiels.

Par exemple, le nettoyage du HTML filtre les composants ou attributs dangereux d’un article de blog contenant du code HTML, afin que seuls les éléments sûrs soient affichés aux utilisateurs. Vous préservez ainsi la sécurité de votre site web et protégez les utilisateurs contre des activités potentiellement dangereuses.

L’utilisation, dans les applications en ligne, de bibliothèques de nettoyage du HTML fiables et correctement maintenues est essentielle. OWASP recommande DOMPurify comme outil utile dans la lutte contre les attaques XSS.

Autres contrôles XSS

La validation, l’encodage et le nettoyage sont les principales techniques de prévention des attaques XSS, mais d’autres mesures peuvent contribuer à limiter les dégâts liés aux erreurs accidentelles. Il s’agit notamment des attributs des cookies, qui modifient la manière dont JavaScript et les navigateurs peuvent interagir avec les cookies, ainsi que d’une liste d’autorisation de la politique de sécurité du contenu qui empêche le chargement de contenu.

À lire aussi :

Advertisement

3 types d’attaques par script intersite

Il existe trois types d’attaques XSS, chacun ayant ses propres techniques et cibles. Nous allons les examiner plus en détail ci-dessous.

  • Le XSS stocké consiste à injecter des scripts dangereux qui restent définitivement sur le serveur
  • Le XSS fondé sur le modèle objet de document (DOM) manipule le DOM pour effectuer des opérations malveillantes directement dans le navigateur de l’utilisateur
  • Le XSS réfléchi renvoie des scripts nuisibles issus des entrées de la victime

XSS stocké

Le XSS stocké consiste à conserver à long terme des scripts ou du code malveillants sur un serveur web, une base de données ou une application. Ces scripts sont ensuite présentés à des personnes imprudentes qui accèdent à un site donné ou consultent une information particulière. Pour éviter cela, nettoyez et évaluez tout contenu généré par les utilisateurs avant de le stocker et de l’afficher sur des sites web.

Stored XSS chart from Research Gate by Hossain Shahriar.
Image from Research Gate by Hossain Shahriar

XSS réfléchi

Le XSS réfléchi est un type d’attaque dans lequel des scripts ou du code malveillants sont injectés dans l’URL ou les paramètres d’une requête, puis le serveur renvoie ces données à l’utilisateur dans sa réponse. Lorsqu’un utilisateur clique sur un lien manipulé, il exécute le script injecté sans le savoir. Pour éviter cela, validez et nettoyez toutes les entrées utilisateur, en particulier les informations provenant des paramètres d’URL ou des champs de formulaire.

Reflected XSS chart from Research Gate by Hossain Shahriar.
Image from Research Gate by Hossain Shahriar

XSS fondé sur le DOM

Dans une attaque XSS fondée sur le DOM, des scripts malveillants manipulent le DOM pour perturber les opérations. Contrairement aux autres attaques XSS, le XSS fondé sur le DOM ne nécessite aucune interaction avec le serveur. Pour l’éviter, il est essentiel de vérifier et de nettoyer les entrées utilisateur avant de modifier dynamiquement le DOM.

Advertisement
DOM-based XSS chart from Research Gate by Hossain Shahriar.
Image from Research Gate by Hossain Shahriar

3 exemples réels d’attaques par script intersite

British Airways, Fortnite et eBay comptent parmi les victimes réelles les plus connues des attaques XSS : des pirates malveillants ont exploité les vulnérabilités de leurs sites web pour injecter des scripts nuisibles et compromettre les données des utilisateurs. Ces intrusions très médiatisées soulignent l’importance cruciale de mettre en place des mesures de sécurité robustes pour se protéger contre ces cybermenaces et protéger les informations des utilisateurs dans un environnement numérique en constante évolution.

British Airways

En 2018, British Airways a été ciblée par Magecart, un groupe de pirates connu pour ses techniques de vol de données de cartes bancaires. Le groupe a exploité une faille XSS dans la bibliothèque JavaScript de Feedify, modifié le script et envoyé des informations privées de clients vers un faux serveur. Celui-ci possédait un certificat SSL, trompant les consommateurs et leur faisant croire que les transactions étaient sûres. Les pirates ont dérobé 380 000 données de réservation avant que la faille liée au logiciel malveillant ne soit découverte.

Fortnite

En 2019, Fortnite, un jeu en ligne populaire comptant plus de 200 millions d’utilisateurs, présentait une faille XSS qui n’avait pas été signalée. Les attaquants auraient pu combiner le problème XSS avec une vulnérabilité dangereuse d’authentification unique (SSO) pour dérober de l’argent virtuel, écouter les conversations des joueurs et semer le chaos. Check Point a informé Fortnite de l’attaque, mais on ignore si des attaquants ont exploité la vulnérabilité à l’époque.

eBay

En 2015 et 2016, une grave faille XSS sur eBay permettait aux attaquants d’insérer du code malveillant dans les pages et d’obtenir un accès complet aux comptes des vendeurs. Les conséquences comprenaient la réduction du prix de produits, l’accès aux informations de paiement et la manipulation d’annonces de grande valeur. Bien qu’eBay ait corrigé la faille, les attaques ultérieures ont persisté jusqu’en 2017, donnant lieu à une longue lutte contre ces menaces.

Quels outils permettent de prévenir les attaques XSS ?

Outils d’analyse des vulnérabilités, outils de test d’intrusion et pare-feu applicatifs web peuvent contribuer à prévenir les attaques XSS et à protéger votre site web contre toute compromission. Voici plusieurs outils que vous pourriez envisager, dont certains sont spécialement conçus pour lutter contre les attaques XSS.

Outils d’analyse des vulnérabilités

Les outils d’analyse des vulnérabilités identifient et évaluent les failles de sécurité des applications web, des réseaux et des systèmes. Ils analysent le code et les entrées, détectent les vulnérabilités potentielles et les signalent aux développeurs ainsi qu’aux équipes informatiques et de sécurité afin d’y remédier et de procéder à l’application de correctifs.

  • XSStrike est un analyseur XSS open source capable d’identifier différentes vulnérabilités XSS. XSStrike peut être utile pour repérer d’éventuels problèmes XSS, mais son efficacité peut dépendre des particularités de l’application testée.
  • XSS Hunter a été créé pour aider les analystes de sécurité et les programmeurs à localiser et à surveiller les vulnérabilités XSS. Il est capable de détecter et de confirmer les problèmes XSS.
  • XSSER est un autre analyseur XSS gratuit et open source. Comme pour XSStrike, l’application et ses mesures de sécurité contribueront à déterminer le succès de l’opération.
  • Acunetix est un outil efficace pour détecter les vulnérabilités en ligne, notamment les failles XSS. Il est largement utilisé et jouit d’une excellente réputation.
  • Burp Suite est un autre outil très réputé pour évaluer la sécurité des applications en ligne. Bien qu’il offre diverses options pour tester les applications web, sa configuration et son utilisation détermineront son efficacité à détecter les vulnérabilités XSS.
  • Intruder est un autre analyseur de vulnérabilités utilisé pour identifier les vulnérabilités XSS ainsi que d’autres failles de sécurité dans les applications en ligne. La configuration et l’étendue de ses contrôles de sécurité contribueront à déterminer son efficacité.
  • Dalfox est un outil d’analyse des vulnérabilités XSS open source, rapide et efficace. Comme pour les autres analyseurs, son utilité dépend de la situation dans laquelle il est utilisé.

Pare-feu applicatifs web

Un pare-feu applicatif web (WAF) est un dispositif de sécurité qui surveille, filtre et bloque le trafic malveillant avant qu’il n’atteigne une application web. Il joue le rôle de gardien en détectant et en bloquant des attaques telles que les attaques XSS et les injections SQL. Les WAF assurent également une protection en temps réel en analysant activement le trafic et en bloquant les requêtes nuisibles.

Bien que les WAF offrent plusieurs protections pour les applications web, l’OWASP relève certaines limites en matière de protection contre les attaques XSS, indiquant qu’ils peuvent être « peu fiables et que de nouvelles techniques de contournement sont régulièrement découvertes. Les WAF ne s’attaquent pas non plus à la cause première d’une vulnérabilité XSS. En outre, ils ne détectent pas une catégorie de vulnérabilités XSS qui opèrent exclusivement côté client. Les WAF ne sont pas recommandés pour prévenir les attaques XSS, en particulier les attaques XSS fondées sur le DOM. »

Voici quelques-uns des leaders du marché des WAF :

  • Akamai App and API Protector : Akamai propose des services de sécurité, et son produit WAF est conçu pour protéger les applications contre diverses attaques, notamment les attaques XSS.
  • AppTrana est une solution de sécurité des applications basée sur le cloud, dotée de fonctionnalités WAF pour se protéger contre les attaques XSS et d’autres menaces visant les applications web.
  • AWS WAF : Le pare-feu applicatif web proposé par Amazon Web Services (AWS) peut être utilisé pour protéger les applications hébergées sur AWS contre diverses menaces, notamment les attaques XSS.
  • Cloudflare WAF est une solution populaire qui protège contre les attaques XSS et d’autres menaces visant les applications web.
  • Imperva WAF : Imperva propose une gamme de produits de sécurité, et son WAF est conçu pour protéger les applications web contre diverses menaces, telles que les attaques XSS.
  • Microsoft Azure App Gateway : Application Gateway d’Azure offre des fonctionnalités WAF pour contribuer à protéger les applications web hébergées sur Azure contre les attaques courantes, telles que les attaques XSS.
  • F5 Advanced WAF est conçu pour protéger les applications en ligne contre les attaques XSS et d’autres risques de sécurité. Pour détecter et arrêter les tentatives d’injection de code malveillant, il combine une détection fondée sur les signatures et une détection fondée sur le comportement.
  • FASTLY est un réseau de diffusion de contenu (CDN) qui fournit également des services de sécurité en ligne, notamment des fonctionnalités WAF. Son WAF est conçu pour détecter et bloquer diverses attaques XSS et autres menaces visant les applications web.
  • Fortinet Fortiweb est un pare-feu applicatif web spécialisé qui protège contre les vulnérabilités courantes des applications web, telles que les attaques XSS. Pour détecter et arrêter ces attaques, il combine des approches fondées sur les signatures et sur l’analyse comportementale.
  • Radware propose une solution WAF conçue pour protéger les applications en ligne contre diverses menaces, telles que les attaques XSS. Elle utilise différentes mesures de sécurité pour détecter et empêcher les injections de code malveillant.
  • Wallarm propose diverses fonctionnalités de sécurité pour les applications et les API, notamment un WAF basé sur le cloud. Il utilise l’apprentissage automatique et l’analyse comportementale pour détecter et corriger les vulnérabilités XSS et autres vulnérabilités des applications web.

À lire aussi :

En résumé : prévenir les attaques XSS

Les vulnérabilités liées aux scripts intersites (XSS) sont beaucoup trop fréquentes, et les organisations qui dépendent de leurs sites et applications web doivent faire de la cybersécurité et des pratiques de codage sécurisé des priorités afin de protéger leurs actifs — ainsi que la réputation de leur marque. Les attaques XSS peuvent transformer des pages web apparemment inoffensives en pages truffées de scripts destructeurs, avec des conséquences catastrophiques et des préjudices pour les clients.

Pour protéger vos applications web, prenez des mesures proactives telles que l’analyse régulière des vulnérabilités, l’utilisation de cookies HTTP-Only, l’échappement des sorties et la validation des entrées utilisateur. Les attaques XSS se produisent de différentes manières, et la mise en œuvre de la validation des variables, de l’encodage des sorties et du nettoyage du HTML peut contribuer à renforcer la sécurité.

Refactorisez votre code pour éviter les points d’insertion dangereux et appuyez-vous sur des bibliothèques fiables telles que DOMPurify afin de préserver un site web sûr et convivial. Donner la priorité à la prévention des attaques XSS et à la sécurité des applications web renforcera la confiance des utilisateurs, qui sauront pouvoir compter sur une expérience sécurisée.

À lire ensuite : Qu’est-ce que le test dynamique de sécurité des applications (DAST) ?

Kathryn Timonera

Datamation and eWeek staff writer Kathryn Pearl Timonera has covered a wide range of industries in her career, including technology, cybersecurity, e-commerce, and programming. Kathryn now applies her talent for presenting information to technology and cybersecurity professionals.

eSecurity Planet Logo

eSecurity Planet is a leading resource for IT professionals at large enterprises who are actively researching cybersecurity vendors and latest trends. eSecurity Planet focuses on providing instruction for how to approach common security challenges, as well as informational deep-dives about advanced cybersecurity topics.

Propriété de TechnologyAdvice. © 2026 TechnologyAdvice. Tous droits réservés

Divulgation publicitaire : Certains des produits qui apparaissent sur ce site proviennent d'entreprises dont TechnologyAdvice reçoit une compensation. Cette compensation peut influencer la façon dont les produits apparaissent sur ce site, notamment l'ordre dans lequel ils apparaissent. TechnologyAdvice n'inclut pas toutes les entreprises ou tous les types de produits disponibles sur le marché.