Spec-Zone.ru › Python 3.13

Модули обработки 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 для проведения атак типа «отказ в обслуживании», доступа к локальным файлам, установления сетевых соединений с другими компьютерами или обхода межсетевых экранов.

Версии Expat ниже 2.6.0 могут быть уязвимы к атакам «Billion Laughs», «квадратичное разрастание» и «длинные токены». Python может быть уязвим, если использует такие старые версии Expat в виде системной библиотеки. См. pyexpat.EXPAT_VERSION.

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

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

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

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

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

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

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

длинные токены

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

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

Spec-Zone.ru

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