Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 386

XSS Baseado em DOM

Revisado porCybersecurity entrepreneur & security researcher

O que é XSS Baseado em DOM?

XSS Baseado em DOMVariante de XSS em que a injeção e a execução ocorrem inteiramente no navegador, à medida que o JavaScript do lado do cliente escreve dados não confiáveis num sink sem sanitização.


O XSS baseado em DOM (Tipo 0) é uma falha de cross-site scripting cuja causa raiz reside inteiramente no código do lado do cliente. O termo foi cunhado por Amit Klein em 2005, no artigo "DOM Based Cross Site Scripting or XSS of the Third Kind." Uma fonte confiável — location.hash, location.search, document.referrer, window.name, postMessage ou localStorage — flui sem sanitização para um sink perigoso, como innerHTML, document.write, eval, setTimeout ou jQuery.html(). Como o payload malicioso viaja frequentemente no fragmento do URL (após o #), nunca é enviado ao servidor, tornando a falha invisível para WAFs, logs de servidor e a maioria dos scanners de XSS refletido.

O impacto no mundo real é grande: o XSS de DOM tem surgido repetidamente em tags de anúncios e de analytics, em handlers de postMessage que confiam em dados cross-origin e em seletores jQuery legados ($(location.hash), corrigido no CVE-2011-4969 para versões anteriores à 1.6.3). A própria análise da Google concluiu que a maioria do XSS nos seus produtos era baseado em DOM, o que motivou a criação do Trusted Types. Defesas: prefira sinks inertes como textContent e setAttribute; sanitize com o DOMPurify ou com a API Sanitizer incorporada; imponha o Trusted Types juntamente com uma Content Security Policy rigorosa; e execute ferramentas de taint-tracking que rastreiam os fluxos de fonte para sink durante a revisão de código.

flowchart LR
  A["Fonte<br/>location.hash / postMessage"] --> B[JS do lado do cliente<br/>lê o valor]
  B --> C{Sanitizado?}
  C -->|"textContent / DOMPurify"| D[Renderizado em segurança]
  C -->|"string crua para innerHTML,<br/>eval, document.write"| E[Sink executa o payload]
  E --> F[Script do atacante executa<br/>na sessão da vítima]
  F --> G[Roubo de cookies, tomada de<br/>conta, keylogging]
  E -.->|Trusted Types bloqueia| H[TypeError, sem execução]

Exemplos

  1. 01

    document.getElementById('out').innerHTML = location.hash.substring(1);

  2. 02

    Um router de SPA usa window.location para renderizar HTML sem sanitização num slot de template.

Perguntas frequentes

O que é XSS Baseado em DOM?

Variante de XSS em que a injeção e a execução ocorrem inteiramente no navegador, à medida que o JavaScript do lado do cliente escreve dados não confiáveis num sink sem sanitização. Pertence à categoria Ataques e ameaças da cibersegurança.

O que significa XSS Baseado em DOM?

Variante de XSS em que a injeção e a execução ocorrem inteiramente no navegador, à medida que o JavaScript do lado do cliente escreve dados não confiáveis num sink sem sanitização.

Como se defender contra XSS Baseado em DOM?

As defesas contra XSS Baseado em DOM costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.

Quais são outros nomes para XSS Baseado em DOM?

Nomes alternativos comuns: XSS Tipo 0, XSS de cliente.

Termos relacionados

Ver também