Configuración XML (.xml)
W3C EstándarExtensible Markup Language (XML) es un lenguaje de marcado versátil que define reglas para codificar documentos en un formato legible tanto para las personas como para las máquinas.
Comprimir XML en línea
Privado - los archivos nunca salen de tu dispositivo
Inspección y metadatos
Los sistemas operativos y analizadores de archivos identifican los archivos de XML inspeccionando la secuencia de bytes binarios inicial:
Firma de cabecera a nivel de bytes (bytes mágicos)
Los sistemas operativos y analizadores de archivos identifican los archivos de XML inspeccionando la secuencia de bytes binarios inicial:
FIRMA HEXADECIMAL (DESPLAZAMIENTO 0):
3C 3F 78 6DREPRESENTACIÓN ASCII: <?xm
Estandarización: W3C Recommendation (XML 1.0 Fifth Edition)
Especificaciones técnicas
| Arquitectura del contenedor | Lenguaje de marcado de texto jerárquico con etiquetas semánticas y atributos personalizados |
| Compresión | Gzip/Deflate reduce entre un 85 % y un 92 % el tamaño de los archivos con etiquetas de cierre repetidas |
| Orden de bytes (Endianness) | Flujo de caracteres UTF-8 o UTF-16, según el atributo de codificación de la declaración XML |
| Espacios de color | No aplicable |
| Canales y estructura | Elementos (<tag>), atributos (attr="val"), bloques CDATA e instrucciones de procesamiento |
| Dimensiones máximas | Estructura de árbol jerárquico sin límite |
| Transparencia | No aplicable |
| Streaming y progresivo | Los analizadores SAX (Simple API for XML) y StAX permiten leer flujos sin cargar todo el documento en memoria. |
Matriz de comparación técnica: XML frente a la competencia
| Atributo técnico | XML (Actual) | JSON | YAML | Protocol Buffers |
|---|---|---|---|---|
| Verbosidad | Alta (etiquetas de cierre y sintaxis de atributos) | Baja (formato compacto de clave y valor) | Baja (se basa en la indentación) | Muy baja (serialización binaria) |
| Validación de esquemas | Estándares XSD y DTD consolidados, con comprobación en tiempo de compilación | JSON Schema (opcional) | JSON Schema / esquemas YAML | Definiciones estrictas de esquemas .proto |
| Espacios de nombres | Soporte nativo para espacios de nombres XML (xmlns) | Sin mecanismo de espacios de nombres nativo | Sin mecanismo de espacios de nombres nativo | Declaraciones de paquetes |
| Transformaciones | Transformaciones declarativas mediante flujos XSLT | Código personalizado o scripts jq | Código personalizado | Código personalizado |
Modos de corrupción comunes y guía de recuperación hexadecimal
Error de análisis XML: etiqueta no coincidente o entidad no definida.
Causa raíz: Hay caracteres reservados sin escapar (como «&», «<» o «>») o las mayúsculas y minúsculas de las etiquetas de apertura y cierre no coinciden.
Recuperación: Sustituya «&» por «&», «<» por «<» y «>» por «>», o incluya el texto sin formato en bloques «<![CDATA[ ... ]]>».
Análisis de seguridad y vectores de ataque al analizador
Históricamente, los analizadores XML han sido de los componentes más atacados en entornos informáticos empresariales, debido a las potentes funciones de DTD y expansión de entidades.
Vectores de ataque conocidos
- Entidades externas XML (XXE): un DOCTYPE malicioso hace referencia a archivos locales del servidor («file:///etc/passwd») o a direcciones de redes internas.
- Ataque «Billion Laughs» (bomba XML): las declaraciones de entidades anidadas se expanden exponencialmente en memoria y provocan una denegación de servicio.
- Inyección XPath: los datos de usuario sin sanear permiten realizar consultas no autorizadas en bases de datos XML.
Mejores prácticas defensivas: Deshabilite siempre la resolución de DTD y el procesamiento de entidades externas en los analizadores XML (establezca la propiedad «disallow-doctype-decl» en true).
Orígenes históricos e hitos
Ventajas principales
- La validación estricta de esquemas mediante XSD (XML Schema Definition) o DTD garantiza la integridad de los datos.
- Los espacios de nombres (xmlns) evitan conflictos entre los nombres de elementos en documentos complejos que combinan varias fuentes.
- Potentes cadenas de herramientas de consulta y transformación (XPath, XSLT, XQuery).
Limitaciones técnicas
- Es muy verboso: las etiquetas de cierre repiten el nombre del elemento, lo que genera archivos grandes y un consumo elevado de ancho de banda.
- El análisis DOM crea árboles de objetos grandes que consumen mucha memoria.
- Es vulnerable a ataques de entidades externas XML (XXE) y a la expansión maliciosa de entidades.
Curiosidades técnicas interesantes
- XML es una versión simplificada de SGML (Standard Generalized Markup Language), diseñada para funcionar sin problemas en la World Wide Web.
- Los documentos ofimáticos modernos (.docx, .xlsx), las imágenes vectoriales (.svg) y los canales RSS son dialectos especializados de XML.
- El clásico ataque de denegación de servicio «Billion Laughs» solo necesita 1 kilobyte de entidades XML anidadas (lol1 hace referencia a diez lol0, hasta lol9) para expandirse exponencialmente hasta ocupar 3 gigabytes de memoria al analizar el archivo.
Preguntas técnicas frecuentes
¿Cuál es la diferencia entre un XML bien formado y uno válido?
Un XML «bien formado» cumple las reglas básicas de sintaxis: tiene etiquetas coincidentes, atributos entre comillas y un único elemento raíz. Un XML «válido» está bien formado y, además, cumple estrictamente una definición de esquema externo (XSD o DTD).
¿Por qué JSON reemplazó a XML para la mayoría de las API web?
JSON se asigna directamente a las estructuras de datos nativas de JavaScript y de otros lenguajes de programación (mapas hash y matrices). Además, requiere menos código repetitivo, se analiza más rápido y genera archivos más pequeños para la red.
¿Qué es una vulnerabilidad de entidad externa XML (XXE)?
Una vulnerabilidad XXE ocurre cuando un analizador XML procesa un documento no confiable con una definición externa de tipo de documento (DTD) habilitada. Los atacantes pueden definir entidades que apunten a archivos locales del servidor (como archivos de configuración del sistema) o a direcciones de redes internas, para que el servidor lea y revele datos confidenciales.