Sobre o projeto
DOMPurify é um sanitizador de XSS baseado em DOM para HTML, MathML e SVG. Ele aceita marcação suja como string ou como Element, DocumentFragment ou Document, remove elementos e atributos que podem executar script ou de outra forma sair do contexto de marcação pretendido e retorna HTML sanitizado por padrão. A API básica do navegador é DOMPurify.sanitize(dirty); o pacote também pode ser importado em projetos baseados em bundlers.
A configuração padrão permite HTML, SVG e MathML, incluindo CSS e atributos de dados personalizados. As aplicações podem restringir a saída a um único perfil, como somente HTML, definir tags e atributos permitidos, proibir tags ou atributos específicos, adicionar tags e atributos, controlar atributos ARIA e de dados, gerenciar elementos personalizados e elementos integrados personalizados, e ajustar o tratamento de data URIs e protocolos de URL. Hooks permitem inspeção ou modificação programática adicional durante a sanitização. A propriedade DOMPurify.removed relata nós removidos para depuração, mas o projeto afirma explicitamente que ela não deve ser usada para tomar decisões de segurança.
DOMPurify suporta Safari, Opera, Edge, Firefox e Chrome modernos, além de outros navegadores que usam motores Blink, Gecko ou WebKit atuais. Em navegadores legados sem suporte, como o Internet Explorer, ele retorna a entrada inalterada e expõe isSupported para que os chamadores possam fornecer um fallback. O ramo 2.x, terminando na v2.5.9, é a linha documentada para atualizações de segurança compatíveis com IE.
O uso no lado do servidor é possível no Node.js quando um DOM é fornecido. A configuração documentada usa jsdom, e o README recomenda fortemente manter o jsdom atualizado porque implementações de DOM mais antigas podem conter vulnerabilidades relacionadas ao parser que comprometem a sanitização. Ele alerta especificamente contra a combinação de DOMPurify com happy-dom neste momento. O pacote isomorphic-dompurify é mencionado como um wrapper de nível superior para configurações entre ambientes.
Outras capacidades incluem sanitização recursiva de templates de DOM, suporte a Shadow DOM e integração opcional com Trusted Types. Com RETURN_TRUSTED_TYPE habilitado em um navegador compatível, sanitize pode retornar um valor TrustedHTML. Os chamadores também podem fornecer ou desabilitar uma política interna de Trusted Types, e a biblioteca detecta configuração recursiva de políticas.
O projeto enfatiza limites de uso seguro: modificar ou reanalisar marcação sanitizada em um contexto diferente, ou passá-la por outra biblioteca que altere o DOM, pode invalidar as garantias do sanitizador. O README contém links para metas de segurança e modelo de ameaças, histórico de classes de ataque e bypasses, listas padrão de tags e atributos, uma demonstração online e um contato de segurança privado. Seus testes automatizados são executados nos motores atuais Chromium, Firefox e WebKit no Linux, macOS e Windows, em snapshots de motores mais antigos e em múltiplas versões do Node.js com jsdom. DOMPurify é licenciado duplamente sob MPL-2.0 ou Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.