我怎样才能保护自己不受拉链炸弹的伤害?

2024-05-20 03:48:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚读到zip bombs,即包含大量可压缩数据(00000000000000000…)的zip文件。

打开时,它们会填满服务器的磁盘。

如何在解压缩压缩文件之前检测到压缩文件是压缩炸弹?

更新您能告诉我在Python或Java中是如何做到的吗?


Tags: 文件数据服务器javazip磁盘炸弹压缩文件
3条回答

在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()

阅读维基百科上的描述-

拒绝包含压缩文件的任何压缩文件。
使用ZipFile.entries()检索文件列表,然后使用ZipEntry.getName()查找文件扩展名。
拒绝包含超过设置大小的文件的任何压缩文件,或者在启动时无法确定大小。
在遍历文件时,使用ZipEntry.getSize()检索文件大小。

Zip是一种“有趣”的格式。一个健壮的解决方案是将数据流输出,当您拥有足够的数据时停止。在Java中,使用ZipInputStream,而不是ZipFile。后者还要求您将数据存储在一个临时文件中,这也不是最好的主意。

相关问题 更多 >