如何保护自己免受拉链炸弹的伤害?

2022-08-31 17:38:19

我刚刚读到关于zip炸弹的信息,即.zip包含大量高度可压缩数据的文件(0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

解压缩之前,如何检测 zip 文件是 zip 炸弹?

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


答案 1

在Python中尝试这个:

import zipfile

with zipfile.ZipFile('a_file.zip') as z
    print(f'total files size={sum(e.file_size for e in z.infolist())}')

答案 2

Zip是一种“有趣”的格式。一个强大的解决方案是将数据流式传输出去,并在您吃饱了之后停止。在 Java 中,使用 而不是 .后者还要求您将数据存储在临时文件中,这也不是最伟大的想法。ZipInputStreamZipFile