Le contenu peut être renvoyé immédiatement, stocké et servi plus tard, ou introduit via une manipulation documentaire côté client dangereuse. L'exécution peut agir avec l'origine de la page et le contexte utilisateur accessible, affectant contenu affiché, données ou actions.
La prévention dépend du maintien des données non fiables hors des contextes exécutables. Les applications doivent utiliser un comportement de framework et des sinks sûrs, appliquer un encodage de sortie propre au contexte et assainir le contenu lorsque les utilisateurs sont intentionnellement autorisés à fournir un balisage limité.
Points clés
Formes courantesLe XSS réfléchi renvoie une entrée dangereuse dans une réponse, le XSS stocké sert du contenu précédemment enregistré, et le XSS fondé sur le Document Object Model naît d'un flux de données et d'une exécution côté client dangereux.
Prévention principalePréférer le templating et les interfaces du navigateur qui traitent les valeurs comme du texte, encoder la sortie pour son contexte exact, valider les URL dangereuses, éviter l'exécution de code dynamique inutile et utiliser des assainisseurs maintenus pour le balisage permis.
ConfinementAppliquer une Content Security Policy bien conçue, protéger les cookies sensibles, minimiser les données de navigateur exposées et contraindre les scripts tiers en défense en profondeur plutôt qu'en substituts d'un traitement sûr des données.
Limite importanteLa validation des entrées, un pare-feu d'applications web ou une Content Security Policy seuls ne peuvent couvrir chaque contexte d'exécution ni chaque chemin côté client. La politique de même origine du navigateur n'empêche pas le code que la page fiable a elle-même introduit.