为了防止 XXE 攻击,我按照 Java DocumentBuilderFactory 的建议禁用了以下功能 - https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet。
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
dbf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
dbf.setXIncludeAware(false);
dbf.setExpandEntityReferences(false);
如果我不将 external-general-entites 和 external-parameter-entities 设置为 false,是否存在任何漏洞?因为当我们将 disallow-doctype-decl 设置为 true 并将 XIncludeAware 设置为 false 时,它不允许扩展这些外部实体。
从上面的代码中删除这两行是否安全 -
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
或者也必须保留它们。如果它是强制性的,如果我们不将它们设置为 false 会有什么漏洞?
请提供特定于 external-genereal/Parameter-entities 的漏洞示例,即使我们将 disallow-doctype 设置为 true,XIncludeAware 设置为 false,ExpandEntityReferences 设置为 false。