我怎样才能保护自己免受拉链炸弹袭击?

时间:2009-09-22 09:36:21

标签: java python security compression zip

我刚刚阅读了zip bombs,即包含大量高度可压缩数据(00000000000000000 ...)的zip文件。

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

如何在解压缩之前检测到拉链文件

更新您能告诉我这是如何在Python或Java中完成的吗?

7 个答案:

答案 0 :(得分:21)

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

答案 1 :(得分:19)

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

答案 2 :(得分:11)

阅读维基百科上的描述 -

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

答案 3 :(得分:5)

首先检查一个zip标题:)

答案 4 :(得分:5)

不要让上传过程写入足够的数据来填满磁盘,即解决问题,而不仅仅是导致问题的一个可能原因。

答案 5 :(得分:4)

如果您使用的ZIP解压缩程序可以提供原始和压缩大小的数据,则可以使用该数据。否则开始解压缩并监视输出大小 - 如果它增长太多则将其松散。

答案 6 :(得分:1)

确保您没有使用系统驱动器进行临时存储。我不确定如果遇到它,病毒扫描仪是否会检查它。

您还可以查看zip文件中的信息并检索内容列表。如何执行此操作取决于用于提取文件的实用程序,因此您需要在此处提供更多信息