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

发布于 2024-08-05 14:58:08 字数 247 浏览 5 评论 0原文

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

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

如何在解压缩 zip 文件之前检测它是否为 zip 炸弹?

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

I just read about zip bombs, i.e. zip files that contain very large amount of highly compressible data (00000000000000000...).

When opened they fill the server's disk.

How can I detect a zip file is a zip bomb before unzipping it?

UPDATE Can you tell me how is this done in Python or Java?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

傲鸠 2024-08-12 14:58:08

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

Try this in 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())}')
北笙凉宸 2024-08-12 14:58:08

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

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.

扬花落满肩 2024-08-12 14:58:08

阅读维基百科上的描述 -

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

Reading over the description on Wikipedia -

Deny any compressed files that contain compressed files.
     Use ZipFile.entries() to retrieve a list of files, then ZipEntry.getName() to find the file extension.
Deny any compressed files that contain files over a set size, or the size can not be determined at startup.
     While iterating over the files use ZipEntry.getSize() to retrieve the file size.

一瞬间的火花 2024-08-12 14:58:08

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

Don't allow the upload process to write enough data to fill up the disk, ie solve the problem, not just one possible cause of the problem.

蹲墙角沉默 2024-08-12 14:58:08

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

If the ZIP decompressor you use can provide the data on original and compressed size you can use that data. Otherwise start unzipping and monitor the output size - if it grows too much cut it loose.

我纯我任性 2024-08-12 14:58:08

首先检查 zip 标头:)

Check a zip header first :)

濫情▎り 2024-08-12 14:58:08

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

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

Make sure you are not using your system drive for temp storage. I am not sure if a virusscanner will check it if it encounters it.

Also you can look at the information inside the zip file and retrieve a list of the content. How to do this depends on the utility used to extract the file, so you need to provide more information here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文