Une XSS (*Cross-Site Scripting*) est une faille qui permet à du contenu non fiable d’être interprété comme du code par le navigateur, dans le contexte d’un site vulnérable.
Elle survient souvent lorsqu’une application affiche une donnée utilisateur sans l’échapper ni la traiter selon son contexte.
Une insertion avec innerHTML peut interpréter la valeur comme du HTML :
// À éviter avec une donnée non fiable element.innerHTML = valeurUtilisateur;
Si la donnée doit être affichée comme du texte, préférer textContent :
// Recommandé pour afficher du texte element.textContent = valeurUtilisateur;
Une XSS peut notamment permettre de modifier le contenu affiché, de tromper un utilisateur ou d’effectuer certaines actions avec ses droits. L’impact dépend des fonctionnalités et des protections de l’application.
innerHTML ou d’autres API qui interprètent des chaînes.HttpOnly et Secure.HttpOnly ou un pare-feu applicatif comme un remplacement à la correction de la faille.Traiter toute donnée externe comme non fiable.