Skip to content

Insecure Deserialization

A desserialização insegura ocorre quando a aplicação processa dados serializados de fontes não confiáveis, o que pode levar a ataques de injeção ou execução de lógica indesejada.


O Risco no Front-end

No ecossistema JavaScript, isso geralmente se refere ao processamento de estados complexos (como persistência do Redux, dados do LocalStorage ou cookies) que podem ter sido manipulados pelo usuário para injetar propriedades que alteram o comportamento da aplicação.

  • Exemplo: Carregar um estado do localStorage que define o tipo de usuário.
javascript
const savedState = JSON.parse(localStorage.getItem('app_state'));
// Se o usuário alterou o JSON manualmente para {"role": "admin"},
// a aplicação pode conceder acessos indevidos.

Melhores Práticas

✅ Como fazer

  • Valide a integridade dos dados desserializados usando esquemas (Zod, Joi).
  • Nunca armazene informações de privilégios (roles, permissões) apenas no lado do cliente; valide sempre no Backend.
  • Se precisar persistir dados sensíveis, use assinaturas digitais ou criptografia para garantir que não foram alterados.

❌ Como não fazer

  • Não use eval() ou new Function() para processar strings que deveriam ser apenas dados.
  • Não confie que o conteúdo do localStorage ou sessionStorage é autêntico e não foi manipulado.