Pular para o conteúdo

XSS em aplicações React: onde o React não te protege

O React escapa texto automaticamente — mas existem pelo menos quatro brechas por onde XSS ainda entra. Veja quais são e como fechá-las.

Por Equipe We Codex3 min de leitura

Uma das grandes vantagens do React é proteger contra XSS por padrão: tudo que você coloca entre chaves vira texto, não HTML. Isso leva muita gente a acreditar que aplicações React são imunes. Não são.

Brecha 1: dangerouslySetInnerHTML

O nome já avisa. Renderizar HTML vindo do usuário ou de um CMS sem sanitizar permite injetar scripts. Se precisar renderizar HTML, passe por uma biblioteca de sanitização como o DOMPurify antes.

tsx
<a href={usuario.site}>Site</a>

Se site for javascript:alert(document.cookie), o clique executa código. Valide que URLs começam com https:// — validação na entrada, como em Validação rigorosa de dados: prevenindo falhas de segurança e dados inconsistentes com Zod e TypeScript.

Brecha 3: dados injetados em scripts

Estado inicial serializado em <script> sem escapar < permite fechar a tag e abrir outra. Escape ao serializar.

Brecha 4: bibliotecas de terceiros

Editores de texto rico, renderizadores de markdown e widgets podem ter vulnerabilidades próprias. Mantenha dependências atualizadas (Dependências vulneráveis: npm audit e além).

Defesa em profundidade

Revisões de segurança em frontend fazem parte da frente de Segurança Anti-Hacker. Fale com a gente.

  • XSS
  • React
  • Segurança
  • Frontend
CompartilharWhatsAppLinkedIn

Resolver de vez, com quem faz isso todo dia

Quer saber quão exposto está o seu sistema hoje?

Este artigo mostra o caminho. A implementação sob medida — o detalhe que muda o resultado no seu caso — é o trabalho da We Codex, empresa de engenharia do grupo Wocom.