fly*_*ire 51 python java compression security zip
我刚看过拉链炸弹,即包含大量高度可压缩数据(00000000000000000 ...)的zip文件.
打开时,它们会填满服务器的磁盘.
在解压缩之前,如何检测zip文件是拉链炸弹?
更新你能告诉我在Python或Java中是如何完成的?
Nic*_*kis 22
在Python中试试这个:
import zipfile
z = zipfile.ZipFile('c:/a_zip_file')
print 'total files size=', sum(e.file_size for e in z.infolist())
z.close()
Run Code Online (Sandbox Code Playgroud)
Tom*_*ine 19
Zip是一种"有趣"的格式.一个强大的解决方案是将数据流出,并在您有足够的时间后停止.在Java中,使用ZipInputStream
而不是ZipFile
.后者还要求您将数据存储在临时文件中,这也不是最好的想法.
Mic*_*mlk 11
阅读维基百科上的描述 -
拒绝任何包含压缩文件的压缩文件.
使用ZipFile.entries()检索文件列表,然后使用ZipEntry.getName()查找文件扩展名.
拒绝包含超过设定大小的文件的任何压缩文件,或者无法在启动时确定大小.
迭代文件时,使用ZipEntry.getSize()来检索文件大小.