1.问题
项目中要对10层压缩的zip、7z等文件用tika解压遇到错误:tika zip bomb detected
也就是说tika认为这是个压缩炸弹。
“压缩炸弹”是一个压缩包文件的木马程序,通常只有几百KB,解压后会变成上百MB或者上GB庞然大物。把你本地磁盘占满。
2.查找源码
查找tika解析源码发现以下处设置了文件炸弹的识别参数
MaximunpackeageEntryDepth是文件深度设置:比如设置10,解压到第10层就认为是压缩炸弹
MaximumCompressionRatio是文件压缩率
其余两个参数未知没有尝试。
3.解决问题
TikaConfig config = new TikaConfig(inputStream);
conifg.getAutoDetectPareseConfig().setMaximunpackeageEntryDepth(11);
......
如此可解决10层压缩文件解析,不被tika认为是文件炸弹。