Configuração XML (.xml)
W3C PadrãoExtensible Markup Language (XML) é uma linguagem de marcação versátil que define um conjunto de regras para codificar documentos em um formato legível tanto por humanos quanto por máquinas.
Comprimir XML online
Privado - os arquivos nunca saem do seu dispositivo
Inspeção e metadados
Sistemas operacionais e analisadores de arquivos identificam arquivos XML pela sequência inicial de bytes:
Assinatura do arquivo em bytes (magic bytes)
Sistemas operacionais e analisadores de arquivos identificam arquivos XML pela sequência inicial de bytes:
ASSINATURA HEXADECIMAL (DESLOCAMENTO 0):
3C 3F 78 6DREPRESENTAÇÃO ASCII: <?xm
Padronização: W3C Recommendation (XML 1.0 Fifth Edition)
Especificações técnicas
| Estrutura do contêiner | Linguagem de marcação de texto hierárquica com tags semânticas e atributos personalizados |
| Compressão | Gzip / Deflate reduzem em 85% a 92% o tamanho de arquivos com tags de fechamento verbosas |
| Ordem dos bytes (endianness) | Fluxo de caracteres UTF-8 / UTF-16 determinado pelo atributo de codificação da declaração XML |
| Espaços de cor | Não aplicável |
| Canais e Estrutura | Elementos (<tag>), atributos (attr="val"), blocos CDATA e instruções de processamento |
| Dimensões Máximas | Estrutura de árvore hierárquica ilimitada |
| Transparência | Não aplicável |
| Streaming e Progressivo | Analisadores SAX (Simple API for XML) e StAX permitem ler fluxos de dados com baixo consumo de memória |
Matriz de comparação técnica: XML e formatos concorrentes
| Atributo técnico | XML (Atual) | JSON | YAML | Protocol Buffers |
|---|---|---|---|---|
| Verbosidade | Alta (tags de fechamento e sintaxe de atributos) | Baixa (formato chave-valor compacto) | Baixa (baseada em indentação) | Muito baixa (serialização binária) |
| Validação de esquema | Padrões XSD e DTD maduros, com validação pelo compilador | JSON Schema (opcional) | JSON Schema / esquemas YAML | Definições rígidas de esquema .proto |
| Namespaces | Suporte nativo a namespaces XML (xmlns) | Sem mecanismo nativo de namespace | Sem mecanismo nativo de namespace | Declarações de pacotes |
| Transformações | Pipelines declarativos de transformação XSLT | Código personalizado / scripts jq | Código personalizado | Código personalizado |
Modos comuns de corrupção e guia de recuperação com editor hexadecimal
Erro de análise XML: etiqueta não correspondente ou entidade não definida.
Causa principal: Caracteres reservados sem escape (como &, < ou >) ou diferença entre maiúsculas e minúsculas nas tags de abertura e fechamento.
Recuperação: Substitua & por &, < por < e > por >, ou envolva o texto livre em um bloco <![CDATA[ ... ]]>.
Análise de segurança e vetores de ataque a analisadores
Analisadores XML são há muito tempo alguns dos componentes mais atacados em sistemas corporativos, devido aos recursos avançados de DTD e expansão de entidades.
Vetores de ataque conhecidos
- Entidade externa XML (XXE): DOCTYPE malicioso que faz referência a arquivos locais do servidor (file:///etc/passwd) ou a endpoints da rede interna.
- Ataque Billion Laughs (bomba XML): declarações de entidades aninhadas que se expandem exponencialmente na memória e causam negação de serviço.
- Injeção de XPath: entradas de usuários não sanitizadas permitem consultas não autorizadas a bancos de dados XML.
Melhores práticas defensivas: Sempre desative a resolução de DTDs externos e o processamento de entidades externas nos analisadores XML (configure disallow-doctype-decl como true).
Origens históricas e marcos
Principais vantagens
- A validação rigorosa de esquemas com XSD (XML Schema Definition) ou DTD garante a integridade dos dados.
- Os namespaces (xmlns) evitam colisões de nomes de elementos em documentos complexos de múltiplas fontes.
- Ferramentas poderosas para consulta e transformação (XPath, XSLT, XQuery).
Limitações técnicas e desvantagens
- Extremamente verboso: tags de fechamento repetem os nomes dos elementos, aumentando o tamanho dos arquivos e o consumo de banda.
- A análise com DOM cria grandes árvores de objetos que consomem muita memória.
- Vulnerável a ataques de entidade externa XML (XXE) e de expansão de entidades.
Curiosidades técnicas
- XML é um subconjunto simplificado do SGML (Standard Generalized Markup Language), criado para funcionar na World Wide Web.
- Documentos de escritório modernos (.docx, .xlsx), imagens vetoriais (.svg) e feeds RSS são dialetos XML especializados.
- O clássico ataque de negação de serviço Billion Laughs usa apenas 1 quilobyte de entidades XML aninhadas (lol1 referencia dez lol0s, até lol9) para consumir exponencialmente até 3 gigabytes de memória durante a análise.
Perguntas técnicas frequentes
Qual é a diferença entre XML bem formado e XML válido?
Um XML bem formado segue as regras básicas de sintaxe (tags correspondentes, aspas em torno dos atributos e um único elemento raiz). Um XML válido, além disso, respeita uma definição de esquema externo (XSD ou DTD).
Por que o JSON substituiu o XML na maioria das APIs web?
JSON corresponde diretamente às estruturas de dados nativas do JavaScript e de outras linguagens (mapas hash e arrays), exige menos código auxiliar, é analisado mais rapidamente e gera cargas de rede menores.
O que é uma vulnerabilidade de Entidade Externa XML (XXE)?
Uma vulnerabilidade XXE ocorre quando um analisador XML processa um documento não confiável com uma definição de tipo de documento (DTD) externa habilitada. Atacantes podem definir entidades que apontam para arquivos locais do servidor (como arquivos de configuração do sistema) ou URLs da rede interna, fazendo com que o servidor leia e divulgue dados confidenciais.