Torna agli aggiornamenti
New releaseAug 3, 2026

DOMPurify v3.4.13

DOMPurify - un sanitizer XSS DOM-only, super veloce, ultra-tollerante per HTML, MathML e SVG. DOMPurify funziona con impostazioni predefinite sicure, ma offre molta configurabilità e hook. Demo:

Condividi

DOMPurify

npm License Downloads dependents npm package minimized gzipped size (select exports) Cloudback

OpenSSF Best Practices Build & Test OpenSSF Scorecard Socket Badge snyk.io package health

DOMPurify è un sanitizer XSS per HTML, MathML e SVG, basato esclusivamente sul DOM, super veloce e estremamente tollerante.

È anche molto semplice da usare e con cui iniziare. DOMPurify è stato avviato nel febbraio 2014 e, nel frattempo, ha raggiunto la versione v3.4.17.

DOMPurify funziona come JavaScript e opera in tutti i browser moderni (Safari (10+), Opera (15+), Edge, Firefox e Chrome - così come quasi qualsiasi altro browser basato su Blink, Gecko o WebKit). Non si rompe su MSIE o altri browser legacy. Semplicemente non fa nulla.

Nota che DOMPurify v2.5.9 è l'ultima versione che supporta MSIE. Per aggiornamenti di sicurezza importanti compatibili con MSIE, utilizza il ramo 2.x.

I nostri test automatizzati coprono 9 combinazioni browser/sistema operativo sui motori attuali (Chromium, Firefox e WebKit su Ubuntu, macOS e Windows) a ogni push, e una matrice separata riesegue la suite su snapshot di motori più vecchi (fino a circa Chromium 110, Firefox 108 e WebKit 16.4, circa tre anni fa) in modo che anche le regressioni sui browser obsoleti vengano rilevate. Eseguiamo anche Node.js v20, v22, v24, v25 e v26 con DOMPurify su jsdom. Si sa che anche versioni precedenti di Node funzionano, ma ehi... nessuna garanzia.

DOMPurify è scritto da esperti di sicurezza con una vasta esperienza in attacchi web e XSS. Non temere. Per maggiori dettagli, leggi anche i nostri Obiettivi di Sicurezza e Modello di Minaccia. Per favore, leggilo. Tipo, davvero. E se ti piacciono i dettagli cruenti, la pagina Classi di Attacco e Storia dei Bypass cataloga i trucchi di mutazione del parser, namespace, clobbering e template contro cui DOMPurify si difende.

Il progetto DOMPurify ha ispirato la creazione della HTML Sanitizer API, che è già disponibile in molti browser. La stessa capacità è ora in fase di standardizzazione direttamente nella specifica WHATWG HTML.

Indice

Cosa fa?

DOMPurify sanitizza l'HTML e previene gli attacchi XSS. Puoi fornire a DOMPurify, ad esempio, una stringa piena di HTML sporco e restituirà una stringa (a meno che non sia configurato diversamente) con HTML pulito. DOMPurify rimuoverà tutto ciò che contiene HTML pericoloso, prevenendo così attacchi XSS e altre brutture. È anche dannatamente veloce. Utilizziamo le tecnologie fornite dal browser e le trasformiamo in un filtro XSS. Più veloce è il tuo browser, più veloce sarà DOMPurify.

Come si usa?

È facile. Basta includere DOMPurify nel tuo sito web.

Usando la versione non minificata (source-map disponibile)

<script type="text/javascript" src="dist/purify.js"></script>

Utilizzo della versione di produzione minificata e testata (source-map disponibile)

<script type="text/javascript" src="dist/purify.min.js"></script>

Successivamente puoi sanificare le stringhe eseguendo il seguente codice:

const clean = DOMPurify.sanitize(dirty);

O forse questo, se ami lavorare con Angular o simili:

import DOMPurify from 'dompurify';

const clean = DOMPurify.sanitize('<b>hello there</b>');

L'HTML risultante può essere scritto in un elemento DOM usando innerHTML o nel DOM usando document.write(). Questo dipende interamente da te. Nota che per impostazione predefinita consentiamo HTML, SVG e MathML. Se hai bisogno solo di HTML, che potrebbe essere un caso d'uso molto comune, puoi configurarlo facilmente anche tu:

const clean = DOMPurify.sanitize(dirty, { USE_PROFILES: { html: true } });

C'è qualche potenziale rischio nascosto?

Bene, tieni presente che se prima sanitizzi l'HTML e poi lo modifichi successivamente, potresti facilmente annullare gli effetti della sanitizzazione. Se passi il markup sanitizzato a un'altra libreria dopo la sanitizzazione, assicurati che la libreria non interferisca con l'HTML di propria iniziativa. Consulta Security Goals & Threat Model per ricette di utilizzo sicuro e per i tag/attributi su cui riflettere due volte, e Attack Classes & Bypass History per capire perché la post-elaborazione e il cambio di contesto del markup vanificano la sanitizzazione.

E se si passa un nodo DOM invece di una stringa?

Categorie