我有使用 loadXML 函数(以及其他 XML 函数)的 PHP 代码。
loadXML 函数是否容易受到 XXE 攻击?即,如果 XML 包含外部实体,它们会被解释吗?
这个函数是否容易受到其他基于 XML 的攻击?例如,Billion Laughs DoS 攻击?
您能否向我推荐易受 XXE 和其他 XML 相关攻击的函数列表?
我知道通过更改设置可以轻松阻止 PHP 中的 XXE 攻击。然而,我很高兴得到我提出的问题的答案。
我有使用 loadXML 函数(以及其他 XML 函数)的 PHP 代码。
loadXML 函数是否容易受到 XXE 攻击?即,如果 XML 包含外部实体,它们会被解释吗?
这个函数是否容易受到其他基于 XML 的攻击?例如,Billion Laughs DoS 攻击?
您能否向我推荐易受 XXE 和其他 XML 相关攻击的函数列表?
我知道通过更改设置可以轻松阻止 PHP 中的 XXE 攻击。然而,我很高兴得到我提出的问题的答案。
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
)来完成。