Que fait xss-cross-site-scripting ?
Playbook XSS. À utiliser lorsque du contenu contrôlé par l'utilisateur atteint du HTML, des attributs, du JavaScript, des récepteurs DOM, des téléchargements ou des chemins de rendu multi-contextes.
Description
Ce playbook fournit des directives pour identifier et prévenir les vulnérabilités Cross-Site Scripting (XSS) dans les applications web. Il couvre les contextes suivants :
- HTML : Contenu inséré directement dans la structure HTML.
- Attributs : Contenu utilisé dans des attributs HTML (par exemple
src,href,onclick). - JavaScript : Contenu intégré dans des blocs ou des expressions JavaScript.
- Récepteurs DOM : Contenu qui atteint des récepteurs DOM dangereux (par exemple
innerHTML,document.write). - Téléchargements : Noms de fichiers ou métadonnées contrôlés par l'utilisateur.
- Multi-contextes : Chemins où le contenu traverse plusieurs contextes de rendu.
Utilisation
Lorsque l'agent rencontre du contenu utilisateur non fiable, il doit :
- Identifier le contexte : Déterminer si le contenu arrive dans du HTML, un attribut, du JavaScript, un récepteur DOM, un téléchargement ou un chemin multi-contexte.
- Valider et échapper : Appliquer les fonctions d'échappement appropriées en fonction du contexte (par exemple
htmlEscape,attrEscape,jsEscape). - Sanitiser : Utiliser une bibliothèque de sanitisation fiable comme DOMPurify pour le HTML et les récepteurs DOM.
- Éviter les erreurs : Ne pas utiliser
eval(),setTimeout(string)ouinnerHTMLavec du contenu non fiable.
Exemple
// Mauvais : vulnérable XSS
element.innerHTML = userInput;
// Bon : échappement HTML
import { escape } from 'sanitizer';
element.textContent = userInput;
// ou
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userInput);