Aller au contenu

XML : eXtensible Markup Language

Infrastructure

XML : eXtensible Markup Language. « Langage de balisage extensible », par analogie avec les étiquettes collées sur les cartons de déménagement, qui disent ce que chaque carton contient et peuvent s'emboîter les unes dans les autres. On l'emploie pour structurer et échanger des données en texte, avec des balises que l'on définit soi-même.

Structure : Un document XML imbrique des éléments délimités par une balise ouvrante et une balise fermante, éventuellement porteurs d'attributs, sous une racine unique. Une seule balise mal fermée suffit pour que le parseur rejette le document entier, sans aucune négociation.

Bien formé ou valide : Un document bien formé respecte la syntaxe ; un document valide respecte en plus une grammaire décrite par une DTD ou un schéma XSD. Les deux notions sont distinctes, et beaucoup de flux en production se contentent de la première.

Surface d'attaque : Un parseur qui résout les entités externes ouvre la porte au XXE (lecture de fichiers locaux, requêtes vers le réseau interne) et à l'expansion exponentielle d'entités. La parade consiste à désactiver le traitement des DTD et des entités externes, réglage qui figure rarement parmi les valeurs par défaut historiques.

Usages courants : XML sert de socle à SAML, SOAP, XML-DSig, SVG et aux formats bureautiques Office. Il devait être lisible par les humains ; vingt ans de fichiers de configuration démontrent qu'il l'est, pour peu qu'on dispose d'un après-midi entier et d'un éditeur qui replie les blocs.

Explication de la marmotte

Imagine un déménagement. Pour retrouver tes affaires, tu colles une étiquette sur chaque carton : « cuisine », puis à l'intérieur une autre sur chaque boîte : « couverts », « verres ». Ce langage fait pareil avec des informations : chaque morceau est entouré d'une étiquette d'ouverture et d'une étiquette de fermeture qui disent ce qu'il contient, et on peut ranger des étiquettes dans d'autres étiquettes. Résultat : un ordinateur, ou une personne patiente, sait exactement où commence et où finit chaque information. Beaucoup de logiciels s'en servent pour s'échanger des données sans se mélanger les pinceaux. Petit piège : un programme trop obéissant peut suivre des instructions cachées dans ces étiquettes, alors il faut le régler prudemment.

Où ce terme est utilisé

← Tout le glossaire