Aller au contenu

Cross-site scripting (XSS)

Avec une faille XSS, un contenu externe devient du code exécutable dans le navigateur. Le point décisif est la façon dont l’application affiche les entrées.

Également appeléXSS
Sécurité informatique

Le cross-site scripting, ou XSS, est une attaque dans laquelle du code externe s’exécute dans le navigateur dans le contexte d’un site touché. L’application insère des données non fiables dans une page de telle sorte que le navigateur les traite comme du contenu exécutable. Le code peut, par exemple, modifier la page affichée ou envoyer des requêtes avec les droits de la personne connectée.

Un commentaire dans un portail de projet

Un portail de projet fictif enregistre les commentaires dans le champ noteText, puis les montre aux autres membres de l’équipe. Le champ est prévu pour du texte ordinaire. Si son contenu est inséré comme du HTML sans vérification appropriée, des entrées spécialement conçues peuvent injecter du contenu exécutable. Enregistrer un commentaire dans sa propre base ne le rend pas fiable pour un affichage ultérieur. Les valeurs issues de systèmes connectés doivent aussi être traitées selon leur emplacement d’affichage.

Si le commentaire doit rester du texte, l’application utilise une méthode d’affichage textuel adaptée ou le rendu sûr proposé par défaut par son framework. Si du HTML mis en forme est volontairement autorisé, il faut une solution de nettoyage maintenue qui définit les contenus permis.

Le contexte de sortie détermine la protection

MDN et OWASP distinguent le traitement du texte, du HTML, des attributs et des autres contextes de sortie. Un encodage adapté au texte HTML ordinaire ne protège pas universellement JavaScript ou les URL. La seule validation des entrées ne remplace pas la protection lors de l’affichage.

Une Content Security Policy peut en complément limiter le code autorisé à s’exécuter. Elle ne remplace ni les points d’insertion sûrs ni le nettoyage HTML nécessaire. Le scénario du portail illustre cette distinction ; il ne décrit pas un test de sécurité réalisé.

Sources