Skip to content

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.