Модулі обробки XML

Вихідний код: Lib/xml/


Інтерфейси Python для обробки XML згруповані в пакеті xml.

Примітка

If you need to parse untrusted or unauthenticated data, see XML security.

Важливо зазначити, що модулі в пакеті xml вимагають наявності принаймні одного XML-аналізатора, сумісного з SAX. Синтаксичний аналізатор Expat включено в Python, тому модуль xml.parsers.expat буде завжди доступним.

Документація для пакетів xml.dom і xml.sax містить визначення прив’язок Python для інтерфейсів DOM і SAX.

Субмодулі обробки XML:

  • xml.dom: визначення DOM API

  • xml.dom.minidom: мінімальна реалізація DOM

  • xml.dom.pulldom: підтримка створення часткових дерев DOM

  • xml.sax: Базові класи SAX2 і зручні функції

  • xml.parsers.expat: прив’язка аналізатора 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 — також відома як експоненціальне розширення об’єктів — використовує кілька рівнів вкладених об’єктів. Кожна сутність посилається на іншу сутність кілька разів, і остаточне визначення сутності містить невеликий рядок. Експоненціальне розширення призводить до кількох гігабайт тексту та споживає багато пам’яті та часу ЦП.

квадратичне розширення сутності

A quadratic blowup attack is similar to a Billion Laughs attack; it abuses entity expansion, too. Instead of nested entities it repeats one large entity with a couple of thousand chars over and over again. The attack isn’t as efficient as the exponential case but it avoids triggering parser countermeasures that forbid deeply nested entities.

декомпресійна бомба

Бомби декомпресії (також відомі як ZIP-бомба) застосовуються до всіх бібліотек XML, які можуть аналізувати стислі потоки XML, такі як потоки HTTP, стиснуті gzip, або файли, стиснуті за допомогою LZMA. Для зловмисника це може зменшити обсяг переданих даних на три або більше величин.

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.