3.1.1. XML 外部实体注入(1) 缺陷描述:使用配置的 XML 解析器无法预防和限制外部实体进行解析,这会 使解析器暴露在 XML External Entities 攻击之下 缺陷的原理、风险及预防:XML External Entities 攻击可利用能够在处理时 动态构建文档的 XML 功能。XML 实体可动态包含来自给定资源的数据。外 部实体允许 XML 文档包含来自外部 URI 的数据。除非另行配置,否则外部 实体会迫使 XML 解析器访问由 URI 指定的资源,例如位于本地计算机或远 程系统上的某个文件。这一行为会将应用程序暴露给 XML External Entity (XXE) 攻击,从而用于拒绝本地系统的服务,获取对本地计算机上文件未经 授权的访问权限,扫描远程计算机,并拒绝远程系统的服务。 缺陷示例: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE foo [ <!ELEMENT foo ANY > <!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>&xxe; </foo> 如果 XML 解析器尝试使用 /dev/random 文件中的内容来替代实体,则此示