Sobre el proyecto

DOMPurify es un saneador XSS basado en DOM para HTML, MathML y SVG. Acepta marcado sucio como cadena o como Element, DocumentFragment o Document, elimina elementos y atributos que pueden ejecutar scripts o salir del contexto de marcado previsto y devuelve HTML saneado de forma predeterminada. La API básica de navegador es DOMPurify.sanitize(dirty); el paquete también puede importarse en proyectos basados en empaquetadores. La configuración predeterminada permite HTML, SVG y MathML, incluidos CSS y atributos data personalizados. Las aplicaciones pueden restringir la salida a un único perfil, como solo HTML, definir etiquetas y atributos permitidos, prohibir etiquetas o atributos específicos, añadir etiquetas y atributos, controlar ARIA y los atributos data, gestionar elementos personalizados y elementos incorporados personalizados, y ajustar el manejo de URI de datos y protocolos URL. Los hooks permiten inspección o modificación mediante programa adicional durante el saneamiento. La propiedad DOMPurify.removed informa los nodos eliminados para depuración, pero el proyecto indica explícitamente que no debe usarse para tomar decisiones de seguridad. DOMPurify es compatible con Safari, Opera, Edge, Firefox y Chrome modernos, además de otros navegadores que usan motores actuales Blink, Gecko o WebKit. En navegadores legacy no admitidos, como Internet Explorer, devuelve la entrada sin cambios y expone isSupported para que los llamantes puedan proporcionar una alternativa. La rama 2.x, que finaliza en v2.5.9, es la línea documentada para actualizaciones de seguridad compatibles con IE. El uso en el lado del servidor es posible en Node.js cuando se suministra un DOM. La configuración documentada usa jsdom, y el README recomienda enfáticamente mantener jsdom actualizado porque las implementaciones DOM antiguas pueden contener vulnerabilidades relacionadas con el analizador que debilitan el saneamiento. Advierte específicamente contra combinar DOMPurify con happy-dom en este momento. Se menciona el paquete isomorphic-dompurify como un envoltorio de nivel superior para configuraciones entre entornos. Otras capacidades incluyen el saneamiento recursivo de plantillas DOM, soporte para Shadow DOM e integración opcional con Trusted Types. Con RETURN_TRUSTED_TYPE activado en un navegador compatible, sanitize puede devolver un valor TrustedHTML. Los llamantes también pueden suministrar o deshabilitar una política interna de Trusted Types, y la biblioteca detecta configuraciones recursivas de políticas. El proyecto enfatiza los límites de uso seguro: modificar o volver a analizar el marcado saneado en un contexto diferente, o pasarlo por otra biblioteca que cambie el DOM, puede invalidar las garantías del saneador. El README enlaza con objetivos de seguridad y modelo de amenazas, un historial de clases de ataques y evasiones, listas predeterminadas de etiquetas y atributos, una demostración en línea y un contacto privado de seguridad. Sus pruebas automatizadas se ejecutan en motores actuales Chromium, Firefox y WebKit en Linux, macOS y Windows, instantáneas de motores anteriores y varias versiones de Node.js con jsdom. DOMPurify tiene licencia dual bajo MPL-2.0 o Apache-2.0.