
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:
DOMPurify
DOMPurify è un sanitizzatore XSS per HTML, MathML e SVG, esclusivamente DOM-based, super veloce e ultra tollerante.
È anche molto semplice da usare e da iniziare. DOMPurify è stato avviato a febbraio 2014 e, nel frattempo, ha raggiunto la versione v3.4.15.
DOMPurify gira come JavaScript e funziona in tutti i browser moderni (Safari (10+), Opera (15+), Edge, Firefox e Chrome - oltre a 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 importanti aggiornamenti di sicurezza compatibili con MSIE, utilizza il ramo 2.x.
I nostri test automatizzati coprono 9 combinazioni browser/OS 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, di circa tre anni fa) così da intercettare anche regressioni su browser obsoleti. Eseguiamo anche Node.js v20, v22, v24, v25 e v26 con DOMPurify su jsdom. Anche versioni più vecchie di Node sono note per funzionare, ma... nessuna garanzia.
DOMPurify è scritto da esperti di sicurezza con una vasta esperienza in attacchi web e XSS. Nessun timore. Per maggiori dettagli, ti invitiamo a leggere anche i nostri Obiettivi di Sicurezza e Modello di Minaccia. Per favore, leggilo. Sul serio. 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 dell'API HTML Sanitizer, che è già disponibile in molti browser. La stessa capacità è ora in fase di standardizzazione direttamente nella specifica HTML del WHATWG.
Indice dei contenuti
- Cosa fa?
- Come lo uso?
- C'è una demo?
- E se trovo un bug di sicurezza?
- Alcuni esempi di purificazione, per favore?
- Cosa è supportato?
- E i browser legacy come Internet Explorer?
- E DOMPurify e Trusted Types?
- Posso configurare DOMPurify?
- Configurazione persistente
- Hook
- Configurazione rimossa
- Integrazione continua
- Mailing list di sicurezza
- Chi ha contribuito?
Cosa fa?
DOMPurify sanifica 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 eliminerà tutto ciò che contiene HTML pericoloso e quindi previene attacchi XSS e altre cose sgradevoli. È anche dannatamente veloce. Utilizziamo le tecnologie che il browser fornisce e le trasformiamo in un filtro XSS. Più veloce è il tuo browser, più veloce sarà DOMPurify.
Come lo uso?
È facile. Basta includere DOMPurify sul tuo sito web.
Utilizzo della versione non minimizzata (source-map disponibile)```html
### Utilizzo della versione di produzione minificata e testata (source-map disponibile)```html
<script type="text/javascript" src="dist/purify.min.js"></script>
Dopodiché puoi sanificare le stringhe eseguendo il seguente codice:```js const clean = DOMPurify.sanitize(dirty);
Oppure questo, se ami lavorare con Angular o simili:```js
import DOMPurify from 'dompurify';
const clean = DOMPurify.sanitize('<b>hello there</b>');
L'HTML risultante può essere scritto in un elemento DOM tramite innerHTML o nel DOM usando document.write(). Dipende interamente da te.
Nota che, per impostazione predefinita, consentiamo HTML, SVG e MathML. Se ti serve solo HTML, che potrebbe essere un caso d'uso molto comune, puoi configurarlo facilmente anche in quel modo:```js
const clean = DOMPurify.sanitize(dirty, { USE_PROFILES: { html: true } });
### Ci sono potenziali insidie?
Beh, tieni presente che se _prima_ sanifichi l'HTML e poi lo modifichi _successivamente_, potresti facilmente **annullare gli effetti della sanificazione**. Se passi il markup sanificato a un'altra libreria _dopo_ la sanificazione, assicurati che la libreria non alteri l'HTML di propria iniziativa. Consulta gli [Obiettivi di Sicurezza e il Modello di Minaccia](https://github.com/cure53/DOMPurify/wiki/Security-Goals-&-Threat-Model) per ricette di utilizzo sicuro e per i tag e gli attributi su cui vale la pena riflettere due volte, e le [Classi di Attacco e la Storia dei Bypass](https://github.com/cure53/DOMPurify/wiki/Attack-Classes-&-Bypass-History) per capire perché la post-elaborazione e la modifica del contesto del markup compromettono la sanificazione.
### Ok, ha senso, andiamo avanti
Dopo aver sanificato il tuo markup, puoi anche dare un'occhiata alla proprietà `DOMPurify.removed` e scoprire quali elementi e attributi sono stati scartati. Ti preghiamo di **non utilizzare** questa proprietà per prendere decisioni critiche per la sicurezza. È solo un piccolo aiuto per le menti curiose.
### Eseguire DOMPurify sul server
DOMPurify tecnicamente funziona anche lato server con Node.js. Il nostro supporto cerca di seguire il [ciclo di rilascio di Node.js](https://nodejs.org/en/about/previous-releases).
Eseguire DOMPurify sul server richiede la presenza di un DOM, il che probabilmente non sorprende. Di solito, [jsdom](https://github.com/jsdom/jsdom) è lo strumento di elezione e **raccomandiamo vivamente** di utilizzare l'ultima versione di _jsdom_.