Skip to main content
Todos os Termos Glossary

Sanitização de DOM

Definition

A sanitização de DOM é o processo de limpar e validar o conteúdo HTML antes de ele ser inserido no Document Object Model, o que ajuda a prevenir ataques de XSS e outras vulnerabilidades de injeção. Os navegadores modernos oferecem APIs de sanitização integradas, e várias bibliotecas disponibilizam funções de sanitização. A sanitização adequada é essencial ao lidar com conteúdo gerado pelo usuário ou dados de terceiros que precisam ser renderizados como HTML.

O que é a sanitização de DOM

A sanitização de DOM é o processo de limpar HTML não confiável para que ele possa ser inserido em uma página sem carregar marcação executável ou perigosa. Quando o código atribui uma string a innerHTML, outerHTML ou a um sink de DOM semelhante, o navegador a analisa e a transforma em nós vivos, incluindo qualquer tag de script, manipulador onerror, URL javascript: ou outro conteúdo ativo que ela contenha. Um sanitizador analisa esse HTML, percorre a árvore resultante e remove ou reescreve tudo o que não estiver em uma lista de permissão de tags e atributos seguros, retornando uma marcação que é renderizada como pretendido mas não pode executar código. Bibliotecas como o DOMPurify fazem isso de forma robusta, e os navegadores agora oferecem uma Sanitizer API nativa e o método setHTML, mais seguro, para o mesmo propósito.

Por que a sanitização importa

A sanitização é uma defesa primária contra o XSS baseado em DOM e o armazenado. Qualquer recurso que renderize como HTML conteúdo gerado por usuários ou third-party, comentários, campos de rich-text, mensagens de chat ou blocos de CMS, é um ponto de injeção em potencial, e o simples escaping não basta quando o conteúdo é genuinamente destinado a ser HTML. Abordagens ingênuas, como colocar a tag de script em uma lista negra ou usar uma regex para remover elementos, deixam escapar o enorme espaço de truques de parser: XSS por mutação, marcação malformada que os navegadores reparam para uma forma executável, peculiaridades de conteúdo externo em SVG e MathML, e atributos de manipuladores de eventos. Um sanitizador auditado que opera sobre a árvore analisada em vez do texto bruto fecha essas brechas e transforma uma vulnerabilidade de alta gravidade em uma saída inerte.

Boas práticas, e o papel complementar da cside

Prefira sinks seguros como textContent ou o binding do framework, e só recorra à inserção de HTML quando for necessário; então sanitize com uma biblioteca mantida como o DOMPurify ou a Sanitizer API nativa em vez de filtros artesanais, mantendo-a atualizada à medida que novos contornos são descobertos. Combine-a com uma Content Security Policy estrita para que um payload que passe despercebido ainda assim não possa ser executado. A sanitização reside no seu próprio código, então ela não cobre o que um script third-party comprometido faz depois de carregado, já que esse script pode chamar innerHTML por conta própria. A cside aborda essa lacuna roteando scripts third-party por meio de um método Script e analisando o payload, detectando e bloqueando gravações de DOM inseguras que esses scripts tentam realizar e registrando-as para fins forenses.

Definição

Escaping é a mesma coisa que sanitização de DOM?

Não. O escaping converte caracteres como os sinais de menor e maior em entidades HTML para que o texto seja renderizado literalmente, o que é correto quando você quer exibir a marcação como texto simples. A sanitização mantém o conteúdo como HTML de verdade mas remove as partes perigosas. Use o escaping para saída de texto e a sanitização apenas quando o conteúdo do usuário precisar ser renderizado como marcação real.

Definição

Devo escrever meu próprio sanitizador de HTML?

Quase nunca. A análise de HTML dos navegadores tem incontáveis casos extremos, conteúdo externo, peculiaridades de mutação e recuperação de marcação malformada, que filtros e regexes escritos à mão deixam escapar, levando a contornos. Use uma biblioteca mantida e amplamente testada como o DOMPurify ou a Sanitizer API embutida, e mantenha-a atualizada à medida que os pesquisadores descobrem novas técnicas de evasão.

Got more questions

Talk to a security expert

We answer client-side security questions every day. Bring yours.

Agende uma demonstração

Quer ver isso em detalhe com um engenheiro?

Trinta minutos, no seu próprio site. Sem slides.

Agende uma demo personalizada para ver:

Como alcançar a conformidade com os requisitos 6.4.3 e 11.6.1 do PCI DSS em 1 dia
Por que scripts de terceiros são um risco de segurança para você e seus visitantes
Como monitorar vazamentos de privacidade e consentimento (RGPD, CCPA) em cada terceiro
Como conter abuso de cadastros, compartilhamento de contas e fraude de chargeback com device intelligence
Como detectar e controlar agentes de IA e bots que acessam seu site em tempo real

Prefere só mandar uma pergunta?

Procurando horários livres…

Apenas humanos de verdade. A gente saberia.

Problemas para agendar? Abrir o agendador em uma nova aba

O que você está tentando resolver?

Conte em uma linha e voltamos com algo útil, não com um discurso genérico.

Costumamos ajudar com:

Ver quais scripts de terceiros rodam no seu site
Evidências para PCI DSS 6.4.3 e 11.6.1
Bots, agentes de IA e roubo de contas

Prefere agendar um horário? Escolher um horário