Table des matières

Résumé des attaques XSS

Définition

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.

Principaux types

Exemple simple

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;

Risques

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.

Prévention

Erreurs à éviter

  • Se fier uniquement à une liste noire de caractères ou de balises.
  • Croire que la validation des données remplace l’encodage à l’affichage.
  • Nettoyer du HTML avec des expressions régulières ou du code maison.
  • Considérer CSP, HttpOnly ou un pare-feu applicatif comme un remplacement à la correction de la faille.

À retenir

Traiter toute donnée externe comme non fiable.

  • Pour afficher du texte, utiliser une méthode qui l’insère comme texte ;
  • pour autoriser du HTML, recourir à une sanitisation spécialisée.