我如何保护自己从一个zip炸弹?(How can I protect myself from a z

2019-07-18 23:01发布

我刚刚看了一下拉链炸弹 ,即含有非常大量的高压缩数据(000000000亿...)的zip文件。

当打开他们填写服务器的磁盘。

我怎么能检测一个压缩文件解压是一个zip炸弹?

更新您可以告诉我这是怎么在Python或Java做了什么?

Answer 1:

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


Answer 2:

Zip is, erm, an "interesting" format. A robust solution is to stream the data out, and stop when you have had enough. In Java, use ZipInputStream rather than ZipFile. The latter also requires you to store the data in a temporary file, which is also not the greatest of ideas.



Answer 3:

在阅读维基百科上的描述 -

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



Answer 4:

首先检查拉链头:)



Answer 5:

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



Answer 6:

如果ZIP解压缩使用可以提供原始和压缩大小的数据,你可以使用这些数据。 否则,开始解压缩并监视输出尺寸 - 如果它生长太切,使其松弛。



Answer 7:

确保你没有使用你的系统驱动器用于临时存储。 我不知道如果遇到它virusscanner将检查。

你也可以看看在zip文件里面的信息和检索内容的列表。 如何做到这一点取决于用于提取文件的工具,所以你需要在这里提供更多信息



文章来源: How can I protect myself from a zip bomb?