JSON vs. XML: Qual é Mais Vulnerável a Ataques?
Compare a segurança de JSON vs. XML. Conheça vulnerabilidades críticas como XXE, SSRF e injeção de dados para blindar as APIs de sua empresa.

Na comparação de JSON vs. XML, o perfil de segurança e a suscetibilidade a ataques são fatores críticos de escolha. Na arquitetura web moderna, a troca de mensagens estruturadas entre cliente e servidor sustenta o funcionamento de bilhões de aplicativos e plataformas. Embora JSON e XML sejam os formatos de serialização de texto mais comuns nas APIs corporativas, a maneira como cada um formata e analisa os dados traz implicações de segurança totalmente opostas.
Neste artigo técnico, analisaremos os vetores de ataque específicos que afetam os analisadores de JSON e XML, compararemos seus riscos de vulnerabilidade e mostraremos como configurar seus ambientes para blindar seus sistemas.
Por que a segurança nos formatos de dados é crítica?
A escolha de um formato para transferir informações entre APIs não é um ato puramente estático. Sempre que um servidor recebe um payload JSON ou XML, ele precisa invocar uma biblioteca de código dedicada (um analisador ou parser) para deserializar o texto em objetos na memória com os quais o código possa interagir.
O perigo real não está na string em trânsito, mas sim nas funcionalidades embutidas no padrão de cada formato e no comportamento dos analisadores. Se um padrão de dados contém propriedades que instruem o analisador a realizar consultas ao sistema de arquivos local ou conexões na rede externa, o formato se torna uma porta aberta para ataques.
O processamento inseguro de entradas pode expor o ambiente a comandos arbitrários e execuções de código remoto. Essa ameaça assemelha-se à exploração de softwares de desenvolvimento que executam programas locais suspeitos de forma automatizada, como o caso da vulnerabilidade de execução de código no Cursor IDE por Git malicioso.
XML e o pesadelo das Entidades Externas (XXE)
O XML (eXtensible Markup Language) é um padrão desenvolvido no final da década de 1990 com foco na manipulação de estruturas extensas de documentos. Por ser muito amplo, ele integra nativamente recursos de validação robustos, esquemas complexos e as Definições de Tipo de Documento (DTD).
É justamente no processamento das DTDs que reside a grande brecha de segurança do XML: as chamadas Entidades Externas XML (XXE). Essas entidades permitem que um documento XML declare variáveis que são resolvidas dinamicamente durante a leitura syntax, carregando mídias do sistema local ou realizando requisições HTTP para domínios externos.
Exemplo de um Exploit XXE
Considere o seguinte payload XML malicioso enviado a uma API vulnerável:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE dados [
<!ENTITY arquivo SYSTEM "file:///etc/passwd">
]>
<usuario>
<nome>&arquivo;</nome>
<funcao>visitante</funcao>
</usuario>
Se o analisador XML do servidor alvo processar DTDs e entidades externas:
- Ele lerá a diretiva de sistema
file:///etc/passwd. - Substituirá a referência de entidade
&arquivo;pelas credenciais e contas do sistema operacional Linux. - Ao construir a tag
<nome>, o servidor retornará os dados secretos do sistema operacional diretamente para o atacante.
Além do roubo de dados, as falhas XXE permitem ataques de Falsificação de Requisição do Lado do Servidor (SSRF), no qual invasores utilizam o servidor vulnerável para varrer redes internas protegidas por firewalls, ou ataques de Negação de Serviço (DoS) como o Billion Laughs, que consome a CPU e a RAM do servidor até derrubar a aplicação.
JSON e seus riscos específicos
O JSON (JavaScript Object Notation) foi projetado como um formato de intercâmbio de dados limpo e leve. Seu foco é traduzir tipos primitivos (cadeias, números, arrays, booleanos e dicionários simples) sem incluir lógicas de metadados complexos ou resolução de componentes de sistema.
Por não suportar DTDs ou importação de arquivos locais, o JSON é infinitamente mais seguro por padrão em relação ao XML. No entanto, sistemas baseados em JSON não estão imunes a perigos:
- Poluição de Protótipo (Prototype Pollution): Em ambientes JavaScript / Node.js, analisadores que não validam chaves controladas pelo usuário podem poluir as propriedades estruturais da linguagem. Isso possibilita que atacantes alterem comportamentos do servidor e executem scripts indesejados.
- Negação de Serviço (JSON DoS): Se o servidor não limitar a profundidade de aninhamento de arrays ou chaves (ex:
[[[[...]]]]), um atacante pode enviar uma estrutura profunda para forçar o analisador a consumir recursos exaustivos, disparando falhas de estouro de pilha (stack overflow) e travando a CPU. - Injeção JSON: Quando os dados são montados através de concatenação de strings em vez de métodos oficiais de codificação (como
JSON.stringify()), atacantes podem inserir aspas e delimitadores para forjar valores em consultas de bancos de dados.
Tabela Comparativa de Segurança: JSON vs. XML
Esta tabela resume os principais quesitos de segurança e vulnerabilidade para ambos os formatos de transporte:
| Vetor de Ataque / Funcionalidade | JSON | XML |
|---|---|---|
| Entidades Externas XML (XXE) | Inexistente (formato não suporta) | Altamente vulnerável por padrão |
| Requisições Forjadas (SSRF) | Raro (apenas por lógica do backend) | Alto risco (via entidades externas DTD) |
| Ataque DoS por Expansão de Entidade | Inexistente | Alto risco (Billion Laughs) |
| DoS por Profundidade de Aninhamento | Possível (se não houver restrição) | Possível |
| Injeção de Código / Protótipos | Possível em parsers JS específicos | Raro |
| Complexidade Sintática | Baixa (fácil de gerenciar e varrer) | Alta (especificações antigas pesadas) |
| Segurança Padrão do Analisador | Alta (lógica de parsing simples) | Baixa (muitas bibliotecas ativam DTD) |
Diretrizes de Proteção para Desenvolvedores
Independente do formato adotado na sua infraestrutura, manter suas APIs seguras requer o endurecimento de suas bibliotecas de análise:
- Desative a Leitura de DTDs no XML: Esta é a medida definitiva e obrigatória para mitigar ataques XXE em qualquer ambiente corporativo.
- Evite Montar Payloads por String: Nunca crie saídas XML ou JSON de forma manual. Use sempre serializadores oficiais para escapar caracteres perigosos.
- Valide Entradas com Esquemas Estritos: Utilize especificações como JSON Schema para certificar que os tipos e tamanhos de dados recebidos coincidem exatamente com o esperado.
- Estipule Limites de Tamanho e Profundidade: Configure seus parsers para descartar objetos com aninhamento excessivo ou arquivos acima de um limite seguro.
Para validar a integridade de seus sistemas contra incidentes reais, a auditoria é uma peça-chave. Para conhecer os prós e contras das metodórias modernas, leia nossa comparação sobre auditoria de vulnerabilidades por IA vs pentesting humano.
Adicionalmente, se você manipula tokens ou senhas nos arquivos de configuração do seu projeto, utilize meios seguros de transporte para evitar vazamentos em repositórios. Conheça as melhores práticas em nosso post sobre como compartilhar senhas de forma segura na Internet.
Ferramenta Recomendada
Para assegurar que suas estruturas de dados JSON estejam limpas e livres de erros de formatação antes de passarem pela análise de seus servidores web, você deve validá-las em um ambiente seguro.
Na TecnoCrypter, construímos o Validador JSON. Esta ferramenta funciona localmente em seu navegador de forma privada e confidencial, permitindo verificar e indentar seus arquivos JSON sem que nenhum caractere saia da sua máquina.
Conclusão
No comparativo JSON vs. XML, a segurança aponta o JSON como o formato com menor superfície de ataque, graças à ausência do processamento legado de DTDs e entidades externas (XXE). O XML, por sua complexidade histórica, exige cuidados extremos de configuração para não expor segredos do servidor.
Contudo, a proteção final de um sistema de software não repousa na escolha do formato, mas no endurecimento ativo das ferramentas que fazem a sua leitura. A validação constante de dados de entrada e a aplicação de filtros em nível de rede são passos mandatórios para a resiliência das APIs.
Fontes e Leituras Recomendadas:
- OWASP XXE Prevention Cheat Sheet — Guia de blindagem e mitigação de entidades externas XML mantido pelo projeto OWASP.
- W3C XML Recommendation — A especificação original e atualizada do formato XML.
- ECMA-404 JSON Data Interchange Standard — A norma técnica oficial que padroniza o formato JSON.
- Artigo relacionado na TecnoCrypter: Auditoria de Vulnerabilidades: IA vs Pentesting Humano
- Artigo relacionado na TecnoCrypter: Como compartilhar senhas de forma segura na Internet


