Modules de traitement XML¶
Code source: Lib/xml/
Les interfaces de Python de traitement de XML sont regroupées dans le paquet xml
.
Note
If you need to parse untrusted or unauthenticated data, see XML security.
Il est important de noter que les modules dans le paquet xml
nécessitent qu'au moins un analyseur compatible SAX soit disponible. L'analyseur Expat est inclus dans Python, ainsi le module xml.parsers.expat
est toujours disponible.
La documentation des interfaces vers DOM et SAX se trouve dans xml.dom
et xml.sax
.
Les sous-modules de traitement XML sont :
xml.etree.ElementTree
: l'API ElementTree, un processeur simple et léger
xml.dom
: la définition de l'API DOMxml.dom.minidom
: une implémentation minimale de DOMxml.dom.pulldom
: gestion de la construction partielle des arbres DOM
xml.sax
: classes mères SAX2 et fonctions utilitairesxml.parsers.expat
: l'interface de l'analyseur Expat
XML security¶
An attacker can abuse XML features to carry out denial of service attacks, access local files, generate network connections to other machines, or circumvent firewalls.
Expat versions lower that 2.6.0 may be vulnerable to "billion laughs",
"quadratic blowup" and "large tokens". Python may be vulnerable if it uses such
older versions of Expat as a system-provided library.
Check pyexpat.EXPAT_VERSION
.
xmlrpc
is vulnerable to the "decompression bomb" attack.
- billion laughs / exponential entity expansion
L'attaque Billion Laughs – aussi connue comme exponential entity expansion – utilise de multiples niveaux d'entités imbriquées. Chaque entité se réfère à une autre entité de multiple fois. L'entité finale contient une chaîne courte. Le résultat de l'expansion exponentielle génère plusieurs gigaoctets de texte et consomme beaucoup de mémoire et de temps processeur.
- quadratic blowup entity expansion
Une attaque quadratic blowup est similaire à l'attaque Billion Laughs ; il s'agit également d'un abus d'extension d'entités. Au lieu d'utiliser des entités imbriquées, cette attaque répète encore et encore une seule entité de plusieurs milliers de caractères. Cette attaque n'est pas aussi efficace que la version exponentielle mais contourne les contre-mesures de l'analyseur qui interdit les entités imbriquées de multiples fois.
- decompression bomb
Des bombes de décompression (ou ZIP bomb) sont valables pour toutes les bibliothèques XML qui peuvent analyser des flux XML compressés comme des flux HTTP gzip ou des fichiers compressés LZMA. Pour L'attaquant, cela permet de réduire d'une magnitude d'ordre 3 ou plus la quantité de données transmises.
- large tokens
Expat needs to re-parse unfinished tokens; without the protection introduced in Expat 2.6.0, this can lead to quadratic runtime that can be used to cause denial of service in the application parsing XML. The issue is known as CVE 2023-52425.