gpt4 book ai didi

c++ - 防止 xml 炸弹 XercesDOMParser - C++

转载 作者:行者123 更新时间:2023-11-30 02:09:24 26 4
gpt4 key购买 nike

我正在使用 XercesDOMParser 在 linux (c++) 中读取 xml 文件,我想防止 xml 炸弹(Billion 笑)所以我设置了这些属性:

parser->setDoNamespaces(true)
parser->setDisableDefaultEntityResolution(true)
parser->setEntityResolver(NULL)
parser->setSkipDTDValidation(true)

然而,这并没有帮助,炸弹仍然存在。你知道如何防止它吗(我必须只使用带有 DOM 的 xerces)

10 倍!

最佳答案

没有直接的方法来防止实体扩展,从而防止 billion laughs 攻击。这是因为 billion laughs attacks 可以是格式良好的 XML,而 XercesDOMParser 是 DOM 的非常严格的实现。但是,您可以通过添加 SecurityManager 来防止 Xerces 中的 billion laughs 攻击。

SecurityManager sm;
sm.setEntityExpansionLimit(100);

parser->setSecurityManager(&sm);

如果您将其添加到您的代码中,当解析器扩展的实体数量超过您设置的实体数量(在本例中为 100)时,Xerces 将抛出一个 SAXParseException。这将防止大笑。

关于c++ - 防止 xml 炸弹 XercesDOMParser - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5549804/

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