Skip to main content
Todos os Termos Glossary

XSS Baseado em DOM

Definition

O XSS baseado em DOM ocorre quando scripts maliciosos são executados por meio de JavaScript client-side que modifica o DOM de forma insegura. Ao contrário do XSS tradicional, esses ataques não precisam interagir com o servidor. Costumam explorar JavaScript vulnerável que processa dados vindos de fontes inseguras, como parâmetros de URL. A prevenção exige um tratamento cuidadoso da entrada do usuário no código client-side e a codificação adequada das saídas.

Como funciona o XSS baseado em DOM

O cross-site scripting baseado em DOM é uma falha do lado do cliente em que a vulnerabilidade reside inteiramente no JavaScript da página, e não na resposta do servidor. A página lê dados de uma fonte que o invasor pode influenciar, comumente o fragmento da URL (location.hash), a query string, o document.referrer ou o armazenamento web, e os passa para um sink perigoso como innerHTML, o método document write ou eval sem sanitizá-los. O navegador então interpreta os dados do invasor como marcação ou código e os executa. Como o valor contaminado pode nunca deixar o navegador, o payload pode ficar depois do hash em uma URL, que os servidores não recebem, então o servidor nunca vê o ataque e não consegue registrá-lo nem filtrá-lo.

Por que o XSS baseado em DOM importa

O XSS de DOM concede os mesmos poderes dentro da origem que os outros tipos de XSS: ler tokens e dados da página, forjar requisições e reescrever a interface, tudo sob a origem confiável do site. Ele é fácil de passar despercebido porque as defesas do lado do servidor, os web application firewalls e o registro de requisições não se aplicam a dados que ficam no navegador ou se escondem no fragmento da URL. As single-page applications modernas ficam especialmente expostas, já que roteamento, templating e renderização acontecem todos no lado do cliente e dependem fortemente de valores da URL e do armazenamento. À medida que os frameworks empurram mais lógica para o navegador, os sinks baseados em DOM se multiplicam, e uma única atribuição insegura a innerHTML em um componente muito usado pode expor todas as páginas que o renderizam.

Como se defender do XSS baseado em DOM

Previna o XSS de DOM mantendo dados não confiáveis fora dos sinks perigosos: prefira textContent a innerHTML, evite eval e métodos legados de escrita no documento, e roteie qualquer HTML que precise inserir por um sanitizador confiável ou pela Sanitizer API e Trusted Types do navegador. O data binding dos frameworks e uma Content Security Policy reduzem a superfície restante. A cside não reescreve a lógica de DOM da sua aplicação, mas observa o que é executado no navegador em tempo de execução. Seu método Script analisa os payloads dos scripts de terceiros, consegue bloquear comportamentos maliciosos e registra o que de fato rodou, de modo que um script injetado ou comprometido que tente exfiltrar dados é pego pelo comportamento, e não pela origem, e essa evidência atende à PCI DSS 6.4.3 e 11.6.1.

Definição

Qual a diferença entre o XSS baseado em DOM e o XSS refletido?

No XSS refletido o servidor injeta o payload no HTML que devolve. No XSS baseado em DOM a resposta do servidor está limpa, e a falha está no JavaScript do lado do cliente, que lê um valor controlado pelo invasor e o escreve em um sink perigoso. O exploit pode residir no fragmento da URL, que o servidor nunca recebe.

Definição

Por que um web application firewall não consegue capturar o XSS baseado em DOM?

Porque o payload muitas vezes nunca chega ao servidor. Valores colocados depois do hash em uma URL ficam no navegador, e outras fontes como o local storage ou o referrer são processadas puramente no lado do cliente. Um firewall só inspeciona o tráfego que vê, então fica cego a ataques executados inteiramente dentro do DOM.

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