Configuration XML (.xml)

Recommandation Standard

Extensible Markup Language (XML) est un langage de balisage polyvalent qui définit des règles pour encoder des documents dans un format lisible à la fois par les personnes et par les machines.

Compresser des fichiers XML en ligne

Privé - les fichiers ne quittent jamais votre appareil

Inspection et métadonnées

Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers XML en inspectant leur séquence initiale d'octets binaires :

Sélectionnez ou déposez des fichiers ici

Privé - les fichiers ne quittent jamais votre appareil

ou coller Ctrl+V
Garantie de confidentialité sans transmission réseau : 0 octet envoyé vers des serveurs externes. Tout le traitement a eu lieu localement dans le bac à sable de votre navigateur.

Signature d'en-tête au niveau des octets (octets magiques)

Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers XML en inspectant leur séquence initiale d'octets binaires :

SIGNATURE HEXADÉCIMALE (DÉCALAGE 0) :

3C 3F 78 6D

REPRÉSENTATION ASCII : <?xm

Normalisation : Recommandation du W3C (XML 1.0 Cinquième édition)

Spécifications techniques

Architecture de conteneurLangage de balisage textuel hiérarchique avec des balises sémantiques personnalisées et des attributs
CompressionGzip / Deflate permet de réduire de 85 à 92 % la taille des balises de fermeture répétitives
Ordre des octetsFlux de caractères UTF-8 / UTF-16 déterminé par l'attribut d'encodage de la déclaration XML
Espaces colorimétriquesNon applicable
Canaux et structureÉléments (<tag>), attributs (attr="val"), blocs CDATA, instructions de traitement
Dimensions maximalesStructure d'arbre hiérarchique non bornée
TransparenceNon applicable
Prise en charge du traitement en continuLes parseurs SAX (Simple API for XML) et StAX permettent une lecture en flux optimisée pour la mémoire

Matrice de comparaison technique : XML face aux concurrents

Attribut techniqueXML (Actuel)JSONYAMLProtocol Buffers
VerbositéÉlevée (balises de fermeture et syntaxe des attributs)Faible (format clé-valeur compact)Faible (basé sur l'indentation)Ultra-faible (sérialisation binaire)
Validation de schémaNormes XSD et DTD éprouvées, dont le respect est vérifié par les validateursSchéma JSON (optionnel)Schéma JSON / schémas YAMLDéfinitions de schémas .proto stricts
Espaces de nomsPrise en charge native des espaces de noms XML (xmlns)Aucun mécanisme d'espace de noms natifAucun mécanisme d'espace de noms natifDéclarations de paquets
TransformationsPipelines de transformation déclarative en XSLTCode personnalisé / scripts jqCode personnaliséCode personnalisé

Modes de corruption courants et guide de restauration hexadécimale

Erreur d'analyse XML : balise discordante ou entité non définie.

Cause initiale: Caractères réservés non échappés (tels que '&', '<' ou '>') ou non-concordance de casse entre les balises d'ouverture et de fermeture.

Récupération: Remplacez « & » par « &amp; », « < » par « &lt; » et « > » par « &gt; », ou placez le texte libre dans une section « <![CDATA[ ... ]]> ».

Analyse de sécurité et vecteurs d'attaque de l'analyseur

Les analyseurs XML ont historiquement été l'un des composants les plus attaqués de l'informatique d'entreprise en raison des puissantes fonctionnalités de DTD et d'expansion d'entités.

Vecteurs d’attaque connus

  • Entité externe XML (XXE) : une déclaration DOCTYPE malveillante référence des fichiers locaux du serveur (« file:///etc/passwd ») ou des points de terminaison du réseau interne.
  • Attaque « Billion Laughs » (bombe XML) : des déclarations d’entités imbriquées se développent de façon exponentielle en mémoire et provoquent un déni de service.
  • Injection XPath : des entrées utilisateur non assainies permettent d’exécuter des requêtes non autorisées sur des bases de données XML.

Bonnes pratiques de défense: Dans les analyseurs XML, désactivez toujours la résolution des DTD externes et le traitement des entités externes (définissez la fonctionnalité « disallow-doctype-decl » sur true).

Origines historiques et jalons

2008Le W3C publie XML 1.0, cinquième édition, standardisant la prise en charge des caractères internationaux modernes.
2000Le W3C publie XML Schema 1.0 (XSD) et DOM Niveau 2, établissant le typage structuré et les architectures d'événements.
1998Le W3C publie la Recommandation XML 1.0 en tant que sous-ensemble simplifié et adapté au web de SGML.

Principaux avantages

  • La validation rigoureuse des schémas à l’aide de XSD (XML Schema Definition) ou de DTD garantit l’intégrité des données.
  • Les espaces de noms (xmlns) empêchent les collisions de noms d'éléments dans les documents complexes multi-sources.
  • Des chaînes d'outils puissantes pour les requêtes et les transformations (XPath, XSLT, XQuery).

Limites techniques

  • Format extrêmement verbeux : les balises de fermeture répètent le nom des éléments, ce qui produit des fichiers volumineux et augmente fortement la consommation de bande passante.
  • L'analyse DOM construit de grands arbres d'objets gourmands en mémoire.
  • Vulnérable aux attaques de type XXE (XML External Entity) et d'expansion d'entités.

Faits intéressants

  • Le XML est un sous-ensemble simplifié de SGML (Standard Generalized Markup Language), conçu pour fonctionner de manière transparente sur le World Wide Web.
  • Les formats bureautiques courants (.docx, .xlsx), les images vectorielles (.svg) et les flux RSS sont tous des dialectes XML spécialisés.
  • L'attaque classique par déni de service « Billion Laughs » utilise seulement 1 kilo-octet d'entités XML imbriquées (lol1 faisant référence à dix lol0, jusqu'à lol9) pour atteindre, par expansion exponentielle, 3 gigaoctets en mémoire lors de l'analyse.

Foire aux questions techniques

Quelle est la différence entre un XML bien formé et un XML valide ?

Un document XML « bien formé » respecte les règles de syntaxe de base : balises appariées, attributs entre guillemets et élément racine unique. Un document XML « valide » est bien formé et respecte aussi la définition d’un schéma externe (XSD ou DTD).

Pourquoi JSON a-t-il remplacé XML pour la plupart des API web ?

JSON correspond directement aux structures de données natives de JavaScript et de nombreux langages (tables de hachage et tableaux). Il nécessite moins de code répétitif, s’analyse plus vite et produit des charges utiles réseau plus légères.

Qu'est-ce qu'une vulnérabilité d'entité externe XML (XXE) ?

Une vulnérabilité XXE se produit lorsqu’un analyseur XML traite un document non fiable alors que les définitions de type de document (DTD) externes sont activées. Un attaquant peut définir des entités qui pointent vers des fichiers locaux du serveur (par exemple, des fichiers de configuration) ou des URL du réseau interne. Le serveur risque alors de lire et de divulguer des données confidentielles.