gpt4 book ai didi

java - XML 外部实体 (XXE) - 外部参数实体和外部通用实体漏洞

转载 作者:行者123 更新时间:2023-12-02 10:21:54 27 4
gpt4 key购买 nike

为了防止 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。

最佳答案

保留它们不是强制性的。设置 disallow-doctype-decl 将防止 XXE 攻击,因为不受信任的 XML 中的任何内联 DOCTYPE 声明都会导致解析器抛出异常。

但是,我建议保持代码不变,因为 external-general-entitiesexternal-parameter-entitiestrue by default 。如果这两行不存在并且后来的维护者(天真地或错误地)删除了第一行,则代码再次变得容易受到攻击。明确地保留其他行使得在进一步修改时维护​​者更有可能查找这些功能,并且我们希望了解它们为何存在。

关于java - XML 外部实体 (XXE) - 外部参数实体和外部通用实体漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54284466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com