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
localStorageque 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()ounew Function()para processar strings que deveriam ser apenas dados. - Não confie que o conteúdo do
localStorageousessionStorageé autêntico e não foi manipulado.