XML 处理模块

源代码: Lib/xml/


用于处理 XML 的 Python 接口在xml包中进行了分组。

Warning

XML 模块对于错误或恶意构建的数据并不安全。如果您需要解析不可信或未经身份验证的数据,请参见XML vulnerabilitiesdefusedxml 和 defusedexpat 软件包部分。

重要的是要注意,xml包中的模块要求至少有一个可用的 SAX 兼容 XML 解析器。 Expat 解析器包含在 Python 中,因此xml.parsers.expat模块将始终可用。

xml.domxml.sax软件包的文档是 DOM 和 SAX 接口的 Python 绑定的定义。

XML 处理子模块是:

XML vulnerabilities

XML 处理模块不能防止恶意构建的数据。攻击者可以滥用 XML Function进行拒绝服务攻击,访问本地文件,与其他计算机构建网络连接或规避防火墙。

下表概述了已知的攻击以及各个模块是否容易受到攻击。

kind sax etree minidom pulldom xmlrpc
billion laughs Vulnerable Vulnerable Vulnerable Vulnerable Vulnerable
quadratic blowup Vulnerable Vulnerable Vulnerable Vulnerable Vulnerable
外部实体扩张 Safe (4) Safe (1) Safe (2) Safe (4) Safe (3)
DTD retrieval Safe (4) Safe Safe Safe (4) Safe
decompression bomb Safe Safe Safe Safe Vulnerable

有关 PyPI 的defusedxml的文档提供了有关所有已知攻击媒介的更多信息,并提供了示例和参考。

defusedxml 和 defusedexpat 软件包

defusedxml是纯 Python 程序包,具有所有 stdlib XML 解析器的修改后的子类,可以防止任何潜在的恶意操作。建议对解析不受信任的 XML 数据的任何服务器代码使用此包。该软件包还附带示例漏洞利用程序以及有关更多 XML 漏洞利用程序(例如 XPath 注入)的扩展文档。

defusedexpat提供了经过修改的 libexpat 和修补的pyexpat模块,这些模块具有针对实体扩展 DoS 攻击的对策。 defusedexpat模块仍允许进行合理且可配置的实体扩展。这些修改可能会包含在将来的某些 Python 版本中,但不会包含在 Python 的任何错误修正版本中,因为它们破坏了向后兼容性。

首页