Você clica. A página carrega. Tudo parece normal. Mas, por trás daquela aparência inofensiva, seu navegador está executando um script que você nunca autorizou.
Parabéns: você acabou de cair num ataque XSS.
O que é o XSS?
Cross-Site Scripting (XSS) é uma vulnerabilidade de segurança que permite que atacantes injetem códigos maliciosos (geralmente em JavaScript) em páginas web vistas por outros usuários.
O código é executado diretamente no navegador da vítima, abrindo caminho para roubo de cookies, sequestro de sessões, redirecionamentos invisíveis e até controle total sobre a interface de um site legítimo.
Em outras palavras: o atacante faz o navegador da vítima trabalhar contra ela mesma.
O que são ataques de script entre sites (XSS)?
XSS é um ataque de malware em que um terceiro injeta scripts maliciosos em sites inofensivos, mas vulneráveis. Os scripts injetados podem rastrear e se passar por usuários legítimos, roubar dados confidenciais, redirecionar um site e muito mais.
Ataques de cross-site scripting não se limitam ao ecossistema. Ainda assim, muitos plugins, temas e elementos de sites contêm vulnerabilidades que hackers podem explorar para injetar código malicioso.
Devido ao alto número de pontos de entrada vulneráveis, os ataques XSS são uma das formas mais comuns de hackers invadirem sites , e se tornaram ainda mais comuns nos últimos anos. Administradores e usuários devem estar cientes dos ataques XSS e saber como evitá-los.
Tipos de XSS
- Refletido (Reflected XSS)
O script malicioso vem de uma URL manipulada e é refletido imediatamente na resposta do servidor, como em caixas de pesquisa ou mensagens de erro.
É usado com frequência em phishing. - Armazenado (Stored XSS)
O código é salvo no próprio servidor (em comentários, perfis, posts etc.) e é executado sempre que outro usuário acessa aquele conteúdo.
É o tipo mais perigoso, pois o ataque é permanente. - DOM-Based XSS
A manipulação ocorre no lado do cliente, via JavaScript, sem envolver o servidor. Um simples script que lê a URL e altera o conteúdo da página já é suficiente para explorar essa falha.
Como funcionam os ataques XSS ?
Ataques XSS podem ser difíceis de entender para usuários e administradores que não são muito experientes em tecnologia, por isso é essencial dedicar algum tempo para aprender o básico.
Roteiros
No desenvolvimento de software, um script é uma sequência de instruções executadas por um programa de computador, como um site para desktop ou um aplicativo móvel.
Você pode criar scripts simples e inofensivos que somam e multiplicam números, mas também pode criar scripts mais complexos e prejudiciais que monitoram e roubam dados. Os invasores XSS usam scripts prejudiciais.
Como os invasores XSS usam scripts maliciosos
Em ataques XSS, hackers usam um ou mais campos de entrada do site (comentários, seções de avaliação, barras de pesquisa, formulários de informações pessoais, etc.) para injetar scripts maliciosos, geralmente escritos em JavaScript. Por exemplo, um hacker pode acessar um site e deixar o seguinte comentário na seção de comentários de uma postagem do blog:

Em “malicious_code_information”, o hacker deixaria informações (endereço IP, número da porta, etc.) que o levariam a um servidor ao qual ele tem acesso. Se um site não tiver proteções para se defender contra essas táticas, o script malicioso será incorporado à página em que foi inserido, permitindo que os hackers monitorem os dados do usuário.
A raiz da vulnerabilidade geralmente reside no fato de o site não validar ou codificar os dados do usuário. Isso significa que eles não verificam as entradas de dados em busca de sequências inválidas ou maliciosas, nem impõem um formato específico ao transmitir dados. Ao explorar essas falhas, os hackers inserem código malicioso em sites nos quais os usuários confiam e que não esperariam ser hackeados.
O que os hackers ganham com ataques XSS em sites?
Ataques XSS costumam ser portas de entrada para ataques futuros, pois estabelecem acesso não autorizado ao backend. A partir daí, hackers podem executar softwares maliciosos adicionais, permitindo-lhes roubar dados e credenciais de usuários e administradores que podem usar posteriormente ou vender com lucro.
Por meio de um ataque XSS, os hackers podem:
- Redirecione os usuários para sites de phishing ou páginas de login falsas, onde eles roubarão as credenciais do usuário.
- executar scripts adicionais, como o envio de pop-ups falsos que solicitam e coletam informações pessoais, como nome de usuário e senha do Facebook ou Google. Eles também podem coletar endereços de e-mail, endereços IP, dados de cartão de crédito e outras informações que os usuários compartilham com sites comprometidos.
- Roubar cookies dos usuários, permitindo que eles acessem outros aplicativos da web com essas credenciais.
- Espalhe mais malware no site, configure anúncios não autorizados dos quais eles possam lucrar, implante ataques de spam de SEO, direcione o tráfego para seus próprios domínios da web ou execute um ataque de ransomware.
- Instale keyloggers, programas que registram e coletam todas as teclas digitadas pelo usuário, gravando efetivamente tudo o que eles digitam no site.
- Sequestrar o site para fins puramente maliciosos.
Tipos de ataques XSS

XSS refletido
Também conhecidos como ataques XSS não persistentes ou Tipo I, esse tipo de ataque XSS “reflete” código malicioso de um site para o navegador do usuário. Na maioria das vezes, os ataques XSS refletidos funcionam assim:
- O hacker cria um link malicioso adicionando campos com código malicioso em uma URL, formulário de preenchimento, resultado de pesquisa ou mensagem de erro (como uma página 404) que de outra forma seria inofensiva.
- O usuário do site é induzido a clicar no link. Ao fazer isso, o usuário solicita conteúdo malicioso do servidor do site.
- O servidor do site retorna os recursos solicitados, incluindo o código malicioso injetado pelo hacker. Isso faz parte do ataque, de onde vem o nome “refletido”.
- O navegador recebe e executa o script malicioso como qualquer elemento legítimo da página.
- O script rouba informações pessoais do usuário.
Esse tipo de ataque XSS geralmente requer algum grau de engenharia social. Ou seja, induzir o usuário a clicar em um link que ele presume ser seguro para roubar seus dados. Isso pode acontecer por meio de um e-mail, mensagem pop-up ou qualquer outra interação na web em que o usuário precise clicar em um link para prosseguir.
Ao contrário do próximo tipo de ataque XSS, em ataques refletidos, o código malicioso nunca fica armazenado no servidor a longo prazo.
XSS armazenado
Também conhecidos como ataques XSS “persistentes” ou “Tipo II”, esse tipo de ataque efetivamente “planta” malware no site alvo. O exemplo acima, sobre deixar um comentário com código malicioso, é um exemplo de ataque XSS armazenado.
Nesses ataques, os hackers introduzem um script que fica armazenado (daí o nome) no servidor do site alvo, deixando um comentário, avaliação, publicação no fórum, etc., no site. O script pode permanecer no servidor por um longo prazo ou até mesmo permanentemente, se não for detectado.
Usuários que interagem com a localização do script malicioso ficam vulneráveis à perda de informações pessoais. Hackers podem configurar o script para que os visitantes comprometam suas credenciais simplesmente clicando ou passando o cursor sobre um elemento específico da página. Hackers também podem programar o script para ser executado assim que a página for carregada.
Devido à sua natureza, o XSS armazenado pode ser difícil de detectar e causar todo tipo de estrago ao mesmo tempo.
XSS baseado em DOM
Também conhecido como ataque “Tipo 0”, esse tipo de ataque XSS é único por não haver interação direta com o servidor do site. Em ataques XSS refletidos e armazenados, o código malicioso sempre interage com o servidor de alguma forma, seja sendo armazenado nele ou enviado sorrateiramente ao usuário ao responder a uma solicitação.
Ataques XSS baseados em DOM dependem da manipulação do Modelo de Objeto de Documento (DOM) do navegador, uma representação hierárquica dos elementos de uma página web. Hackers podem modificar o DOM de um navegador com JavaScript para injetar código malicioso.
Um dos principais problemas que deixam a porta aberta para esse ataque é que muitos sites usam muito pouco HTML e, em vez disso, dependem de muito código JavaScript para lidar com as interações do usuário com a página. Essa é uma ótima maneira de minimizar a sobrecarga do servidor, pois a maioria das interações é processada no navegador do usuário, em vez de consumir recursos do servidor, mas também expõe os sites a muitas vulnerabilidades.
Ataques XSS baseados em DOM ocorrem quando o código JavaScript aceita a entrada do usuário (fonte) e a passa como parte de uma função insegura que é exibida de volta para a página (coletor). Funções “inseguras” não realizam verificações de segurança na entrada antes de exibi-la na página.
Quando uma entrada não é verificada em busca de código malicioso, os hackers podem executar praticamente o que quiserem, incluindo scripts que monitoram e coletam dados do usuário.
Ataques XSS são um dos métodos mais comuns usados por hackers para violar a segurança de sites porque muitos elementos do site contêm vulnerabilidades que permitem que terceiros introduzam scripts maliciosos.
De acordo com o relatório de segurança de 2022 da Wordfence , os ataques XSS foram a categoria mais comum de vulnerabilidade divulgada em 2022, respondendo por quase metade de todas as vulnerabilidades divulgadas naquele ano.
Um dos principais problemas em torno dos ataques XSS é que eles podem estar presentes em qualquer site, popular ou não. Em seu relatório de 2021, a Sucuri determinou que o plugin Astra Starter Templates estava entre os dez plugins mais vulneráveis com base em sua popularidade. Com mais de um milhão de instalações, as vulnerabilidades XSS deste plugin representaram uma ameaça significativa à segurança de muitos usuários e sites.

Casos Reais
- MySpace (2005): Samy Worm – Um worm XSS que se propagava automaticamente entre perfis, ganhando mais de 1 milhão de “amigos” em horas.
- British Airways (2018) – Vazamento de dados de clientes expostos via scripts injetados em campos de pagamento.
- TikTok (2020) – Vulnerabilidade XSS permitia controlar contas e manipular conteúdo com simples links compartilhados.
Impactos
- Roubo de tokens de autenticação
- Sequestro de sessão
- Defacement de páginas
- Redirecionamento para páginas falsas
- Roubo de dados pessoais e bancários
- Execução de comandos em APIs locais (em apps mal protegidos)
Como se proteger?
Desenvolvedores:
- Sempre use escapamento de caracteres (htmlspecialchars, sanitize, encode)
- Use frameworks que automaticamente protegem contra XSS (React, Angular)
- Implemente Content Security Policy (CSP)
- Valide e filtre toda entrada do usuário (input validation)
Usuários:
- Evite clicar em links suspeitos ou URLs longas com parâmetros desconhecidos
- Mantenha navegadores e extensões atualizados
- Use extensões como NoScript ou uBlock para bloquear scripts externos
Ferramentas para detecção
- OWASP ZAP (automatizado e gratuito)
- Burp Suite
- Acunetix
- SonarQube
- Browser DevTools (para inspeção e reprodução)
Conclusão
XSS não é um truque bobo de hacker adolescente — é uma das vulnerabilidades mais exploradas do mundo, presente em mais de 70% dos ataques web reportados segundo o OWASP.
E sabe qual o detalhe mais cruel?
Ela só existe porque alguém confiou demais na entrada do usuário.
Se o seu site, app ou plataforma aceita conteúdo sem filtrar, escapar ou validar, então ele já está vulnerável.
A pergunta não é “se” será atacado, mas quando.
Fontes: