python:XML处理模块

  • 简介
  • XML 漏洞
  • defusedxml 包

简介

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

警告 XML 模块对于错误或恶意构造的数据是不安全的。 如果你需要解析不受信任或未经身份验证的数据,请参阅 XML 漏洞 和 defusedxml 包 部分。
值得注意的是 xml 包中的模块要求至少有一个 SAX 兼容的 XML 解析器可用。在 Python 中包含 Expat 解析器,因此 xml.parsers.expat 模块将始终可用。

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

XML 处理子模块包括:

xml.etree.ElementTree: ElementTree API,一个简单而轻量级的XML处理器

xml.dom:DOM API 定义

xml.dom.minidom:最小的 DOM 实现

xml.dom.pulldom:支持构建部分 DOM 树

xml.sax:SAX2 基类和便利函数

xml.parsers.expat:Expat解析器绑定

XML 漏洞

XML 处理模块对于恶意构造的数据是不安全的。 攻击者可能滥用 XML 功能来执行拒绝服务攻击、访问本地文件、生成与其它计算机的网络连接或绕过防火墙。

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

Expat 2.4.1 及更新的版本不易受 “billion laughs” 和 “quadratic blowup” 漏洞的攻击。 因为可能要依赖系统提供的库而仍被列为易受攻击的项目。 请检查 pyexpat.EXPAT_VERSION。

xml.etree.ElementTree 不会扩展外部实体并在实体发生时引发 ParserError。

xml.dom.minidom 不会扩展外部实体,只是简单地返回未扩展的实体。

xmlrpclib 不扩展外部实体并省略它们。

从 Python 3.7.1 开始,默认情况下不再处理外部通用实体。

billion laughs / exponential entity expansion (狂笑/递归实体扩展)
Billion Laughs 攻击 – 也称为递归实体扩展 – 使用多级嵌套实体。 每个实体多次引用另一个实体,最终实体定义包含一个小字符串。 指数级扩展导致几千 GB 的文本,并消耗大量内存和 CPU 时间。
external entity expansion
实体声明可以包含的不仅仅是替换文本。 它们还可以指向外部资源或本地文件。 XML 解析器访问资源并将内容嵌入到 XML 文档中。

DTD retrieval
Python 的一些 XML 库 xml.dom.pulldom 从远程或本地位置检索文档类型定义。 该功能与外部实体扩展问题具有相似的含义。

decompression bomb
Decompression bombs(解压炸弹,又名 ZIP bomb)适用于所有可以解析压缩 XML 流(例如 gzip 压缩的 HTTP 流或 LZMA 压缩的文件)的 XML 库。 对于攻击者来说,它可以将传输的数据量减少三个量级或更多。

PyPI上 defusedxml 的文档包含有关所有已知攻击向量的更多信息以及示例和参考。

defusedxml 包

defusedxml 是一个纯 Python 软件包,它修改了所有标准库 XML 解析器的子类,可以防止任何潜在的恶意操作。 对于解析不受信任的XML数据的任何服务器代码,建议使用此程序包。 该软件包还提供了有关更多 XML 漏洞(如 XPath 注入)的示例漏洞和扩展文档。

python:XML处理模块相关推荐

  1. python xml.dom模块解析xml

    1. 什么是xml?有何特征? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 例子:del.xml <?xml version=&q ...

  2. python xml.dom模块解析xml

    阅读目录 1. 什么是xml?有何特征? 2. 获得标签属性 3. 获得子标签 4. 获得标签属性值 5. 获得标签对之间的数据 6. 例子 7. 总结 回到顶部 1. 什么是xml?有何特征? xm ...

  3. Python——XML模块

    Python--XML模块 xml跟json差不多,是实现不同语言或程序进行数据交换的一种协议.json使用起来更好更简单,但因为xml出来的早,直到现在大多数传统行业比如金融行业都在使用. 如果模块 ...

  4. python之路——模块和包

    一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编 ...

  5. python中json模块博客园_python的json模块

    python的json模块 什么是序列化和反序列化? 序列化 在分布式环境下,无论是何种数据,都会以二进制序列的形式在网络上传输.序列化是一种将对象以一连串的字节描述的过程,用于解决在对对象流进行读写 ...

  6. Python常用编程模块汇总

    目录 一.关于文件处理 1.json文件读写 2.xml文件读写 3.csv文件读写 4.excel文件读写 二.关于异步 1.threading 1.asyncio 2.aio_pika库 一.关于 ...

  7. python自动化常用模块_Python自动化 【第五篇】:Python基础-常用模块

    目录 模块介绍 time和datetime模块 random os sys shutil json和pickle shelve xml处理 yaml处理 configparser hashlib re ...

  8. Python自学——python的常用模块

    Python学习--python的常用模块 原文作者:佛山小程序员 原文链接:https://blog.csdn.net/weixin_44192923/article/details/8656325 ...

  9. Python XML操作处理

    Python XML操作处理 Python XML操作处理: 可扩展标记语言(XML)是一个很象HTML或SGML的标记语言.这是建议由万维网联盟作为一个开放的标准. 什么是XML ? 可扩展标记语言 ...

最新文章

  1. GNU ARM汇编--(二)汇编编译链接与运行
  2. SQL --分支取数据
  3. 微信小程序入门第一天
  4. rms归一化_将FFT频谱幅度归一化为0dB
  5. MAC安装apache tomcat配置方法图文教程
  6. Linux文件打包成不同后缀的压缩文件
  7. 28-地理空间数据云下载
  8. 斐讯n1 无线打印服务器,斐讯N1 设置旁路由(网关)的方法 | nas2x
  9. [独立游戏][纳税]个人独立游戏缴税纳税相关问题
  10. 再见python你好julia_再见,Python2。你好,Python3
  11. IDEA设置背景图片
  12. SLAM学习笔记(二十)LIO-SAM流程及代码详解(最全)
  13. [附源码]java毕业设计零食销售系统
  14. 集算器协助SQL实现非等值分组
  15. java使用set去重lit集合集合去重字符串集合去重
  16. vulhub复现之shiro反序列化漏洞复现
  17. 涉及移动终端电子围栏的一些技术点
  18. 通信机房,到底长什么样?
  19. 小小感想▪所有的沟通都是在消耗情绪
  20. Java2D+3D游戏王(Yo-Gi-Oh!)开发日志3 —— 卡片编辑器

热门文章

  1. 激活层是每一层都有吗_你爱的校园青春偶像剧来了,每对CP都很亮眼!有想看的一部吗?...
  2. 什么是专利申请号、专利号、公开号?
  3. 马原期末复习3. 经济基础和上层建筑之间的矛盾
  4. 网页禁止进行复制粘贴操作怎么破解?
  5. Centos7.5下rpm方式安装gitlab-ce
  6. win10安装ug软件出现中文用户名怎么解决?ug安装中文目录报警ug安装中文名ug安装中文路径
  7. python动态粒子素材,Python 技术篇-3行代码实现Gif动画生成,Gif动画素材获取方法...
  8. DNS 服务器学习总结
  9. 外贸独立站建站的误区
  10. 十行代码带你量化交易入门