Skip to content

DOM Clobbering

O DOM Clobbering é uma técnica de ataque onde elementos HTML com atributos id ou name são usados para sobrepor variáveis globais de JavaScript ou propriedades do objeto document.


O Risco

Muitos scripts legados ou bibliotecas podem verificar a existência de uma variável global antes de realizar uma ação. Se um atacante injetar um elemento HTML com um ID que coincide com essa variável, ele pode controlar o fluxo lógico do script.

  • Exemplo:
html
<img id="config" src="x" name="url" value="https://malicious.com">

No JavaScript:

javascript
const apiURL = window.config.url || "https://legit-api.com";
// Se o elemento acima for injetado, apiURL passará a ser "https://malicious.com"

Melhores Práticas

✅ Como fazer

  • Valide rigorosamente qualquer HTML injetado (sanitização).
  • Use window.hasOwnProperty('varName') ou verifique o tipo da variável para garantir que não é um elemento do DOM.
  • Evite depender de variáveis globais que podem ser facilmente sobrepostas.
  • Use ferramentas de sanitização modernas que removem IDs e Names perigosos.

❌ Como não fazer

  • Não confie em variáveis globais para configurações críticas sem verificar sua origem.