Spec-Zone.ru › Python 3.14

Модули обработки XML

Исходный код: Lib/xml/

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

Примечание

Если вам нужно разобрать недоверенные или неаутентифицированные данные, см. раздел Безопасность XML.

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

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

Подмодули для обработки XML:

  • xml.etree.ElementTree: API ElementTree — простой и легковесный обработчик XML
  • xml.dom: определение API DOM
  • xml.dom.minidom: минимальная реализация DOM
  • xml.dom.pulldom: поддержка построения частичных деревьев DOM
  • xml.sax: базовые классы SAX2 и вспомогательные функции
  • xml.parsers.expat: привязка анализатора Expat

Безопасность XML

Злоумышленник может использовать возможности XML для проведения атак типа «отказ в обслуживании», доступа к локальным файлам, создания сетевых подключений к другим машинам или обхода межсетевых экранов при разборе контролируемого злоумышленником XML в Python или других средах.

Встроенные XML-анализаторы Python используют для разбора XML библиотеку libexpat, обычно называемую Expat.

По умолчанию Expat не обращается к локальным файлам и не создает сетевых подключений.

Версии Expat ниже 2.7.2 могут быть уязвимы к атакам «миллиард смешков», «квадратичный рост» и «большие токены», а также к непропорциональному использованию динамической памяти. Python включает собственную копию Expat, а то, использует ли Python встроенную или системную версию Expat, зависит от того, как интерпретатор Python has been configured в вашей среде. Python может быть уязвим, если использует такие старые версии Expat. Проверьте pyexpat.EXPAT_VERSION.

xmlrpc уязвим к атаке «бомба распаковки».

атака «миллиард смешков» / экспоненциальное расширение сущностей

Атака «миллиард смешков» — также известная как экспоненциальное расширение сущностей — использует несколько уровней вложенных сущностей. Каждая сущность несколько раз ссылается на другую, а определение последней сущности содержит короткую строку. Экспоненциальное расширение приводит к появлению нескольких гигабайт текста и потребляет много памяти и процессорного времени.

атака квадратичного роста при расширении сущностей

Атака квадратичного роста похожа на атаку «миллиард смешков»; в ней также используется расширение сущностей. Вместо вложенных сущностей одна большая сущность размером в пару тысяч символов повторяется снова и снова. Эта атака не так эффективна, как экспоненциальная, но позволяет избежать срабатывания защитных мер анализатора, запрещающих глубоко вложенные сущности.

бомба распаковки

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

большие токены

Expat должен повторно разбирать незавершенные токены; без защиты, добавленной в Expat 2.6.0, это может привести к квадратичному времени выполнения, которое можно использовать для организации отказа в обслуживании приложения, разбирающего XML. Эта проблема известна как CVE 2023-52425.

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/xml.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API