首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java XXE漏洞

Java XXE漏洞
EN

Security用户
提问于 2022-04-05 11:46:04
回答 2查看 325关注 0票数 1

如果我已经在用

代码语言:javascript
复制
xmlInputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);

那么我是否也需要使用

代码语言:javascript
复制
xmlInputFactory.setProperty("javax.xml.stream.isSupportingExternalEntities", false);

修复XXE漏洞?

EN

回答 2

Security用户

发布于 2022-09-03 08:13:09

对于那个特定的类,不,您的解决方案是有效的。实际上,禁用外部实体而不是DTD将使您容易受到另一种用于拒绝服务的递归实体的攻击(也称为“数十亿笑”攻击)。

但是,请注意,Java有多个XML解析器,而且它们并不都关心XMLInputFactory或它的属性;除非您非常肯定您没有使用其他任何东西,否则可能还需要在其他方面禁用DTD。相关的OWASP备忘单列出了十多个用于Java的通用,其中大多数是独立配置的。

当然,在生成解析器对象之前,您需要禁用工厂上的属性(尽管在实际解析XML之前您可能能够修改解析器对象上的属性)。

票数 1
EN

Security用户

发布于 2022-04-05 12:40:53

它依赖于应用程序背后支持的语言。例如,您使用的XMLInputFactory是Java解析器可用的库规则之一。主要的目标是禁用DTD,它基本上包括对这种攻击的主要防御。您可以从OWASP中找到一个完整的参考这里

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/260956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档