XSS (Cross-Site Scripting)
O XSS ocorre quando um atacante consegue injetar scripts maliciosos (geralmente JavaScript) em páginas visualizadas por outros usuários.
Tipos de XSS
Reflected XSS
O script malicioso é "refletido" de uma requisição HTTP (geralmente via parâmetros de URL) para a página.
- Exemplo: Um link de busca
?q=<script>alert('xss')</script>.
Stored XSS
O script é armazenado permanentemente no servidor (ex: banco de dados) e servido para todos que acessarem a página.
- Exemplo: Um comentário em um post ou o nome de um perfil de usuário.
DOM-based XSS
A vulnerabilidade existe inteiramente no código do lado do cliente. O script é executado quando o código JS lê dados de uma fonte não segura (como a URL) e os escreve no DOM.
- Exemplo:
document.getElementById('welcome').innerHTML = decodeURIComponent(window.location.hash);
Melhores Práticas
✅ Como fazer
- Use sempre o escape automático do React/Vue (JSX/Templates).
- Use bibliotecas de sanitização como
DOMPurifyao lidar com HTML vindo de fontes externas.
❌ Como não fazer
- Jamais use
dangerouslySetInnerHTMLouv-htmlcom dados não sanitizados. - Não confie em
innerHTMLpara inserir textos simples; usetextContent.