JSON Injection
O JSON Injection ocorre quando um atacante consegue manipular uma estrutura JSON enviada ou recebida pela aplicação para alterar sua lógica de processamento.
O Risco
Se o Front-end concatena strings para construir um objeto JSON antes de enviá-lo para a API, um atacante pode injetar aspas e chaves para inserir campos extras.
- Exemplo de código vulnerável:
javascript
const payload = `{"username": "${userInput}", "role": "user"}`;
// Se userInput for: charlie", "role": "admin
// O payload vira: {"username": "charlie", "role": "admin", "role": "user"}Dependendo de como o servidor processa chaves duplicadas, o usuário pode ganhar privilégios de administrador.
Melhores Práticas
✅ Como fazer
- Use sempre
JSON.stringify()para construir strings JSON a partir de objetos JavaScript. - Valide os dados no Backend antes de processar qualquer campo sensível.
- Use esquemas de validação (como Zod ou Joi) para garantir a estrutura do JSON recebido.
❌ Como não fazer
- Nunca use concatenação de strings ou templates literais para construir estruturas JSON dinâmicas.