PHP loadXML 是否容易受到 XXE 攻击(以及其他攻击)?是否有易受攻击的功能列表?

信息安全 php 攻击 xml xxe
2021-09-09 16:44:15

我有使用 loadXML 函数(以及其他 XML 函数)的 PHP 代码。

  1. loadXML 函数是否容易受到 XXE 攻击?即,如果 XML 包含外部实体,它们会被解释吗?

  2. 这个函数是否容易受到其他基于 XML 的攻击?例如,Billion Laughs DoS 攻击?

  3. 您能否向我推荐易受 XXE 和其他 XML 相关攻击的函数列表?

我知道通过更改设置可以轻松阻止 PHP 中的 XXE 攻击。然而,我很高兴得到我提出的问题的答案。

1个回答

loadXML 函数是否容易受到 XXE 攻击?即,如果 XML 包含外部实体,它们会被解释吗?

默认情况下,没有。

外部实体未经LIBXML_NOENT设置就不会解析如果libxml_disable_entity_loader设置为true,甚至LIBXML_NOENT不会允许XXE。

这个函数是否容易受到其他基于 XML 的攻击?例如,Billion Laughs DoS 攻击?

不,默认设置会引起数十亿笑声:

DOMDocument::loadXML(): Detected an entity reference loop in Entity

不会被抓住的是二次爆炸请注意,实体实际上需要被替换,这可以通过相当糟糕的名称 来完成,LIBXML_NOENT或者通过简单地访问节点(例如 via textContent)来完成。