Volver a actualizaciones
Nuevo releaseAug 3, 2026

DOMPurify v3.4.13

DOMPurify: un sanitizador XSS exclusivo para DOM, súper rápido y ultra tolerante, para HTML, MathML y SVG. DOMPurify funciona con una configuración segura por defecto, pero ofrece mucha configurabilidad y hooks. Demo:

Compartir

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 es un saneador XSS para HTML, MathML y SVG que trabaja únicamente sobre el DOM, es extremadamente rápido y sumamente tolerante.

También es muy sencillo de usar y de empezar a utilizar. DOMPurify se inició en febrero de 2014 y, mientras tanto, ha alcanzado la versión v3.4.17.

DOMPurify se ejecuta como JavaScript y funciona en todos los navegadores modernos (Safari (10+), Opera (15+), Edge, Firefox y Chrome, así como en prácticamente cualquier otro que use Blink, Gecko o WebKit). No se rompe en MSIE ni en otros navegadores heredados. Simplemente no hace nada.

Ten en cuenta que DOMPurify v2.5.9 es la última versión compatible con MSIE. Para actualizaciones de seguridad importantes compatibles con MSIE, utiliza la rama 2.x.

Nuestras pruebas automatizadas cubren 9 combinaciones de navegador/SO en los motores actuales (Chromium, Firefox y WebKit en Ubuntu, macOS y Windows) en cada push, y una matriz separada vuelve a ejecutar la suite sobre instantáneas de motores más antiguos (hasta aproximadamente Chromium 110, Firefox 108 y WebKit 16.4, de hace unos tres años) para que también se detecten regresiones en navegadores desactualizados. También ejecutamos Node.js v20, v22, v24, v25 y v26 con DOMPurify sobre jsdom. Se sabe que las versiones anteriores de Node también funcionan, pero bueno... sin garantías.

DOMPurify está escrito por personas de seguridad con una amplia experiencia en ataques web y XSS. No temas. Para más detalles, lee también sobre nuestros Objetivos de seguridad y modelo de amenazas. Léelo. En serio. Y si disfrutas de los detalles escabrosos, la página Clases de ataque e historial de bypass cataloga los trucos de mutación del parser, espacios de nombres, clobbering y plantillas contra los que DOMPurify se defiende.

El proyecto DOMPurify inspiró la creación de la HTML Sanitizer API, que ya se distribuye en muchos navegadores. Esa misma capacidad ahora se está estandarizando directamente en la especificación HTML del WHATWG.

Tabla de contenidos

¿Qué hace?

DOMPurify sanitiza HTML y previene ataques XSS. Puedes alimentar DOMPurify con, por ejemplo, una cadena llena de HTML sucio y devolverá una cadena (a menos que se configure de otro modo) con HTML limpio. DOMPurify eliminará todo lo que contenga HTML peligroso y, de este modo, prevendrá ataques XSS y otras fechorías. Además, es tremendamente rápido. Usamos las tecnologías que proporciona el navegador y las convertimos en un filtro XSS. Cuanto más rápido sea tu navegador, más rápido será DOMPurify.

¿Cómo lo uso?

Es fácil. Solo tienes que incluir DOMPurify en tu sitio web.

Usando la versión sin minificar (source-map disponible)

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

Uso de la versión de producción minificada y probada (source-map disponible)

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

Después, puedes sanear cadenas ejecutando el siguiente código:

const clean = DOMPurify.sanitize(dirty);

O quizás esto, si te encanta trabajar con Angular o similar:

import DOMPurify from 'dompurify';

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

El HTML resultante se puede escribir en un elemento del DOM usando innerHTML o en el DOM usando document.write(). Eso depende completamente de ti. Ten en cuenta que, por defecto, permitimos HTML, SVG y MathML. Si solo necesitas HTML, lo cual podría ser un caso de uso muy común, también puedes configurarlo fácilmente:

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

¿Existe algún potencial de foot-gun?

Bien, tenga en cuenta que si primero sanitiza HTML y luego lo modifica después, podría fácilmente anular los efectos de la sanitización. Si alimenta el marcado sanitizado a otra biblioteca después de la sanitización, asegúrese de que la biblioteca no manipule el HTML por su cuenta. Consulte Security Goals & Threat Model para recetas de uso seguro y las etiquetas/atributos que merecen pensarse dos veces, y Attack Classes & Bypass History para entender por qué el posprocesamiento y el cambio del contexto del marcado anulan la sanitización.

¿Y si se pasa un nodo DOM en lugar de una cadena?

Categorías