Configuration XML (.xml)
Recommandation StandardExtensible 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 :
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 6DREPRÉSENTATION ASCII : <?xm
Normalisation : Recommandation du W3C (XML 1.0 Cinquième édition)
Spécifications techniques
| Architecture de conteneur | Langage de balisage textuel hiérarchique avec des balises sémantiques personnalisées et des attributs |
| Compression | Gzip / Deflate permet de réduire de 85 à 92 % la taille des balises de fermeture répétitives |
| Ordre des octets | Flux de caractères UTF-8 / UTF-16 déterminé par l'attribut d'encodage de la déclaration XML |
| Espaces colorimétriques | Non applicable |
| Canaux et structure | Éléments (<tag>), attributs (attr="val"), blocs CDATA, instructions de traitement |
| Dimensions maximales | Structure d'arbre hiérarchique non bornée |
| Transparence | Non applicable |
| Prise en charge du traitement en continu | Les 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 technique | XML (Actuel) | JSON | YAML | Protocol 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éma | Normes XSD et DTD éprouvées, dont le respect est vérifié par les validateurs | Schéma JSON (optionnel) | Schéma JSON / schémas YAML | Définitions de schémas .proto stricts |
| Espaces de noms | Prise en charge native des espaces de noms XML (xmlns) | Aucun mécanisme d'espace de noms natif | Aucun mécanisme d'espace de noms natif | Déclarations de paquets |
| Transformations | Pipelines de transformation déclarative en XSLT | Code personnalisé / scripts jq | Code 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 « & », « < » par « < » et « > » par « > », 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
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.