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 DOM

* "xml.dom.minidom" : une implémentation minimale de DOM

* "xml.dom.pulldom" : gestion de la construction partielle des arbres
  DOM

* "xml.sax" : classes mères *SAX2* et fonctions utilitaires

* "xml.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**.
