À propos du projet
DOMPurify est un assainisseur XSS basé sur le DOM pour HTML, MathML et SVG. Il accepte un balisage sale sous forme de chaîne, d'élément, de DocumentFragment ou de Document, supprime les éléments et attributs capables d'exécuter un script ou de sortir du contexte de balisage prévu, et renvoie par défaut du HTML assaini. L'API de base du navigateur est DOMPurify.sanitize(dirty) ; le paquet peut également être importé dans des projets basés sur un bundler.
La configuration par défaut autorise HTML, SVG et MathML, y compris CSS et les attributs de données personnalisés. Les applications peuvent restreindre la sortie à un seul profil tel que HTML uniquement, définir les balises et attributs autorisés, interdire des balises ou attributs spécifiques, ajouter des balises et attributs, contrôler les attributs ARIA et de données, gérer les éléments personnalisés et les éléments intégrés personnalisés, et ajuster le traitement des URI de données et des protocoles URL. Les hooks permettent une inspection ou modification programmatique supplémentaire pendant l'assainissement. La propriété DOMPurify.removed signale les nœuds supprimés pour le débogage, mais le projet précise explicitement qu'elle ne doit pas être utilisée pour prendre des décisions de sécurité.
DOMPurify prend en charge les navigateurs modernes Safari, Opera, Edge, Firefox et Chrome, ainsi que d'autres navigateurs utilisant les moteurs Blink, Gecko ou WebKit actuels. Sur les navigateurs hérités non pris en charge tels qu'Internet Explorer, il renvoie l'entrée inchangée et expose isSupported afin que les appelants puissent fournir une solution de repli. La branche 2.x, se terminant par v2.5.9, est la ligne documentée pour les mises à jour de sécurité compatibles avec IE.
L'utilisation côté serveur est possible dans Node.js lorsqu'un DOM est fourni. La configuration documentée utilise jsdom, et le README recommande fortement de maintenir jsdom à jour car les implémentations DOM plus anciennes peuvent contenir des vulnérabilités liées à l'analyse qui compromettent l'assainissement. Il met spécifiquement en garde contre la combinaison de DOMPurify avec happy-dom pour le moment. Le paquet isomorphic-dompurify est mentionné comme un wrapper de plus haut niveau pour les configurations multi-environnements.
D'autres capacités incluent l'assainissement récursif des modèles DOM, la prise en charge du Shadow DOM et l'intégration optionnelle des Trusted Types. Avec RETURN_TRUSTED_TYPE activé dans un navigateur compatible, sanitize peut renvoyer une valeur TrustedHTML. Les appelants peuvent également fournir ou désactiver une politique interne de Trusted Types, et la bibliothèque détecte la configuration récursive de la politique.
Le projet met l'accent sur les limites d'utilisation sécurisées : la modification ou le réanalyse du balisage assaini dans un contexte différent, ou son passage via une autre bibliothèque qui modifie le DOM, peut invalider les garanties de l'assainisseur. Le README renvoie à un modèle de sécurité et de menace, un historique des classes d'attaque et des contournements, les listes par défaut des balises et attributs, une démo en ligne et un contact de sécurité privé. Ses tests automatisés s'exécutent sur les moteurs Chromium, Firefox et WebKit actuels sous Linux, macOS et Windows, des instantanés de moteurs plus anciens et plusieurs versions de Node.js avec jsdom. DOMPurify est sous double licence MPL-2.0 ou Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.