当前位置:  开发笔记 > 编程语言 > 正文

如何确定在检索Excel文件时是否抛出Zip Bomb错误样式表是否合法?

如何解决《如何确定在检索Excel文件时是否抛出ZipBomb错误样式表是否合法?》经验,为你挑选了1个好方法。

当我尝试使用apache POIs XSSFReader获取Excel文件的样式表时,我有一段代码错误.涉及该文件的所有操作如下所示:

XSSFReader reader = new XSSFReader(OPCPackage.open(excelFile.getPath(), PackageAccess.READ));
StylesTable table = reader.getStylesTable();

我收到以下错误:

引起:java.io.IOException:检测到Zip炸弹!该文件将超过某些限制,这通常表明该文件用于夸大内存使用量,因此可能带来安全风险.如果需要处理超出这些限制的文件,可以通过setMinInflateRatio()和setMaxEntrySize()调整这些限制.计数器:1644067,cis.counter:16384,比率:0.009965530601855033Limits:MIN_INFLATE_RATIO:0.01,MAX_ENTRY_SIZE:4294967295

我不知道如何判断这是否是误报(在Excel中打开文件似乎没问题),如果是这样,如何正确处理这个?



1> centic..:

这些检查主要用于您接受来自不受信任的同行的文档的情况,例如,当您网站上的用户可以上传任意文档以通过您的服务进行处理时.

在这种情况下,您希望避免接收因内存使用过多而导致服务器爆炸的文档.

因此,Apache POI具有开发人员认为"理智"的默认限制,以允许处理几乎所有有效文档,但应阻止所有恶意格式化的文档.

只要您知道文档的来源并且您信任源不会生成恶意文档,您可以在必要时安全地设置更高的限制.在您的情况下,压缩数据的大小远远低于扩展数据,这被认为是可疑的,因此通过设置较低的最小通货膨胀率,例如ZipSecureFile.setMinInflateRatio(0.009),在加载文档之前,您应该能够使其适用于您.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有