Configuración XML (.xml)

W3C Estándar

Extensible 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:

Selecciona o arrastra archivos aquí

Privado - los archivos nunca salen de tu dispositivo

o pega Ctrl+V
Garantía de privacidad sin transmisión de red: 0 bytes subidos a servidores externos. Todo el procesamiento se realizó de forma local en el entorno seguro de tu navegador.

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 6D

REPRESENTACIÓN ASCII: <?xm

Estandarización: W3C Recommendation (XML 1.0 Fifth Edition)

Especificaciones técnicas

Arquitectura del contenedorLenguaje de marcado de texto jerárquico con etiquetas semánticas y atributos personalizados
CompresiónGzip/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 colorNo aplicable
Canales y estructuraElementos (<tag>), atributos (attr="val"), bloques CDATA e instrucciones de procesamiento
Dimensiones máximasEstructura de árbol jerárquico sin límite
TransparenciaNo aplicable
Streaming y progresivoLos 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écnicoXML (Actual)JSONYAMLProtocol Buffers
VerbosidadAlta (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 esquemasEstándares XSD y DTD consolidados, con comprobación en tiempo de compilaciónJSON Schema (opcional)JSON Schema / esquemas YAMLDefiniciones estrictas de esquemas .proto
Espacios de nombresSoporte nativo para espacios de nombres XML (xmlns)Sin mecanismo de espacios de nombres nativoSin mecanismo de espacios de nombres nativoDeclaraciones de paquetes
TransformacionesTransformaciones declarativas mediante flujos XSLTCódigo personalizado o scripts jqCódigo personalizadoCó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 «&amp;», «<» por «&lt;» y «>» por «&gt;», 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

2008El W3C publica la quinta edición de XML 1.0, que normaliza la compatibilidad con los caracteres internacionales actuales.
2000El W3C publica XML Schema 1.0 (XSD) y DOM Level 2, que establecen una arquitectura de tipos y eventos estructurados.
1998El W3C publica la recomendación XML 1.0 como una versión simplificada de SGML, adaptada a la web.

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.