XML外部实体(XXE)漏洞因解析器未禁用外部实体导致,攻击者可利用其读取敏感文件、探测内网或触发带外数据泄露;防御需在Java、Python、.NET、PHP等环境中关闭外部实体解析,并优先使用JSON替代XML。

XML外部实体引用(XXE,XML External Entity)是一种安全漏洞,出现在应用程序解析XML输入时,对外部实体的声明和加载未加限制。攻击者可利用此漏洞读取服务器本地文件、执行远程请求,甚至实现服务器端请求伪造(SSRF)或拒绝服务攻击。
在XML中,实体用于定义别名以简化内容引用。外部实体指向文档之外的数据源。例如:
zuojiankuohaophpcn!DOCTYPE example [ <!ENTITY external SYSTEM "file:///etc/passwd"> ]> <data>&external;</data>上面的代码尝试从服务器读取 /etc/passwd 文件内容。如果解析器支持外部实体且未禁用相关功能,就会将敏感文件内容返回。
XXE漏洞常出现在以下情况:
典型危害包括:
/etc/shadow、配置文件)http://192.168.0.1:8080等URL)核心原则是禁止处理外部实体。具体措施依语言而定:
DocumentBuilderFactory时,设置以下属性为false:
    setExpandEntityReferences(false)setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)setFeature("http://xml.org/sax/features/external-general-entities", true)XmlReader并设置DtdProcessing为Prohibit或Ignore
libxml_disable_entity_loader(true)
另外建议:
基本上就这些。只要禁用外部实体加载,大多数XXE风险都能避免。关键是开发时要有安全意识,不依赖解析器默认行为。毕竟默认往往不够安全。
以上就是XML外部实体引用的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号