JSON vs. XML : Quel format est le plus vulnérable ?
Comparez la sécurité de JSON vs. XML. Découvrez les vulnérabilités XXE, SSRF et les injections pour protéger vos API des cyberattaques.

Pour comparer JSON vs. XML, l'analyse de la sécurité et des vulnérabilités de chaque format est indispensable. Dans l'écosystème du web moderne, le transfert de données entre serveurs et clients structure l'exécution de millions d'applications. Si JSON et XML demeurent les formats de sérialisation les plus populaires pour les interfaces API, leurs architectures et leurs comportements lors de la lecture des données entraînent des risques de sécurité radicalement différents.
Dans cet article, nous décortiquerons les vecteurs d'attaque spécifiques qui menacent les formats JSON et XML, comparerons leurs profils de vulnérabilité et détaillerons comment configurer vos analyseurs de données pour bloquer les cyberattaques.
Pourquoi la sécurité des formats de données est-elle cruciale ?
Le format choisi pour échanger des variables n'est pas neutre. Dès qu'un serveur reçoit une charge utile (payload) JSON ou XML, il sollicite une bibliothèque logicielle appelée analyseur (parser) afin de désérialiser la chaîne de texte en objets système exploitables par le code.
Le risque de sécurité ne provient pas uniquement de la dangerosité des données reçues, mais des fonctionnalités incluses dans le standard du format et de leur gestion par l'analyseur. Si les spécifications d'un format autorisent le parser à appeler des services externes, à exécuter des commandes ou à explorer le disque local, le format lui-même devient une passerelle d'exploitation.
Un défaut de validation des entrées peut générer des compromissions majeures, de la même manière que des programmes ou des éditeurs de code exécutent silencieusement des scripts locaux non vérifiés, à l'image de la faille d'exécution de code arbitraire dans Cursor IDE via Git malveillant.
XML et le cauchemar des Entités Externes (XXE)
XML (eXtensible Markup Language) est une spécification extrêmement puissante née à la fin des années 1990. Conçu pour le traitement de documents complexes riches en métadonnées, il embarque des outils avancés comme les schémas de validation, les espaces de noms et les Définitions de Type de Document (DTD).
Cependant, le support des DTD constitue le point faible de la sécurité XML en raison de la possibilité de déclarer des Entités Externes XML (XXE). Ces entités permettent à un fichier XML d'appeler dynamiquement des fichiers système ou des adresses réseau externes pendant l'analyse syntaxique.
Exemple de payload XXE malveillant
Voici un exemple d'injection de code XML qu'un attaquant pourrait soumettre à un serveur de traitement de formulaires :
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE data [
<!ENTITY document SYSTEM "file:///etc/passwd">
]>
<utilisateur>
<nom>&document;</nom>
<statut>invite</statut>
</utilisateur>
Si le processeur XML du serveur cible n'est pas configuré pour bloquer les DTD :
- Il traite la directive système
file:///etc/passwd. - Il remplace la variable
&document;par le contenu réel du fichier des comptes utilisateurs Linux. - Lors de la sérialisation de la balise
<nom>, le serveur expose ces données confidentielles à l'attaquant dans sa réponse.
Par ailleurs, les failles XXE facilitent les attaques de type SSRF (Server-Side Request Forgery) visant à scanner le réseau interne de l'hébergeur, ainsi que les attaques DoS par épuisement de ressources (comme la bombe XML Billion Laughs qui sature la mémoire RAM de l'appareil).
JSON et ses faiblesses structurelles
Le format JSON (JavaScript Object Notation) a été créé pour offrir une syntaxe d'échange plus légère et directe. Il se cantonne à mapper des types primitifs simples (chaînes, nombres, tableaux, booléens) sans spécifications de métadonnées ou de résolution d'adresses.
Dépourvu de DTD et d'accès direct au système de fichiers, JSON présente une surface d'attaque beaucoup plus restreinte que XML. Il comporte toutefois quelques risques :
- Pollution de Prototype (Prototype Pollution) : En JavaScript / Node.js, l'analyse non sécurisée de clés JSON contenant des expressions spécifiques peut modifier les propriétés intrinsèques des prototypes système, permettant à des attaquants d'injecter des privilèges ou d'exécuter du code.
- Déni de Service (JSON DoS) : Sans limitation de la profondeur d'imbrication des objets (ex.
[[[[...]]]]), un attaquant peut forcer l'analyseur à allouer d'immenses ressources pour traiter le payload, provoquant des erreurs de dépassement de pile (stack overflow) et l'arrêt du service. - Injection JSON : Si le payload est assemblé par concaténation de texte brut au lieu de méthodes de sérialisation reconnues (telles que
JSON.stringify()), les attaquants peuvent insérer des séparateurs (guillemets, virgules) pour altérer la logique des données de destination.
Tableau comparatif de sécurité : JSON vs. XML
Ce tableau résume les forces et vulnérabilités de chaque format d'interopérabilité :
| Vecteur d'Attaque / Critère | JSON | XML |
|---|---|---|
| Entités Externes XML (XXE) | Impossible (non supporté) | Risque très élevé par défaut |
| Requêtes SSRF (Server-Side) | Rare (uniquement via logique applicative) | Élevé (via appels externes DTD) |
| Épuisement DoS par expansion | Impossible | Risque très élevé (Billion Laughs) |
| DoS par profondeur d'imbrication | Possible (si non restreint) | Possible |
| Pollution de prototype / Code | Possible (spécifique aux parsers JS) | Rare |
| Complexité syntaxique | Faible (simple à analyser et valider) | Élevée (nombreux outils hérités) |
| Sécurité par défaut | Élevée (analyseur simple) | Faible (DTD souvent activées par défaut) |
Directives pour sécuriser le traitement de vos flux
Que vous adoptiez le JSON ou le XML, la sécurité de vos applications repose sur le blindage systématique de vos parseurs :
- Désactivez le traitement des DTD en XML : C'est la règle d'or pour éliminer définitivement le risque de failles XXE.
- Bannissez la concaténation de chaînes : Construisez vos structures de données à l'aide de sérialiseurs reconnus pour éliminer les injections de caractères de contrôle.
- Validez la conformité syntaxique : Appliquez des schémas de validation stricts pour vous assurer que les données reçues correspondent fidèlement à la structure attendue.
- Restreignez les volumes et la profondeur : Configurez vos parsers et vos serveurs HTTP pour bloquer les charges utiles anormalement volumineuses ou trop imbriquées.
Lors de la mise en production de vos applications, il est impératif d'évaluer vos API de manière globale. Pour explorer les méthodes de validation applicatives, découvrez notre comparatif sur l'audit de vulnérabilités par l'IA face au pentesting humain.
De plus, si vous insérez des jetons d'accès dans vos configurations JSON ou XML, veillez à ne jamais les archiver dans vos dépôts Git. Consultez notre protocole pour comment partager des mots de passe en toute sécurité sur Internet.
Outil recommandé par TecnoCrypter
Pour valider l'intégrité de vos structures de données JSON avant de les soumettre à vos serveurs de production, il est recommandé de les analyser dans un environnement isolé.
TecnoCrypter met à votre disposition son Validateur JSON. Cet outil s'exécute en local dans votre navigateur, vous permettant de corriger, formater et tester vos configurations JSON en toute confidentialité sans envoyer de données sur le réseau.
Conclusion
L'évaluation de la sécurité de JSON vs. XML met en lumière la vulnérabilité intrinsèque de XML, liée à la complexité de son standard et aux failles d'injection d'entités externes (XXE). JSON propose une structure dépouillée de ces outils hérités complexes, réduisant considérablement la surface d'exposition de vos développements.
Néanmoins, la sécurité dépend de la configuration finale de vos outils d'analyse. Le contrôle rigoureux des entrées, la désactivation des fonctionnalités DTD et le recours à des validateurs locaux restent indispensables pour garantir la résilience de vos environnements web.
Références et ressources de sécurité :
- OWASP XXE Prevention Cheat Sheet — Directives OWASP pour sécuriser les analyseurs XML contre les attaques XXE.
- W3C XML Recommendation — Normes et spécifications de l'architecture XML.
- ECMA-404 JSON Data Interchange Standard — Spécification standardisée du format d'échange de données JSON.
- Article lié sur TecnoCrypter : Audit de vulnérabilités : l'IA face au pentesting humain
- Article lié sur TecnoCrypter : Comment partager des mots de passe en toute sécurité sur Internet


