- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
这与问题about zip bombs有关,但要考虑 gzip 或 bzip2 压缩,例如接受 .tar.gz
文件的 Web 服务。
Python 提供了一个方便的 tarfile module使用起来很方便,但似乎不能提供针对 zipper 炸弹的保护。
在使用 tarfile 模块的 python 代码中,检测 zip 炸弹最优雅的方法是什么,最好不要从 tarfile 模块复制太多逻辑(例如透明解压缩支持)?
而且,只是为了让它不那么简单:不涉及真正的文件;输入是一个类似文件的对象(由网络框架提供,代表用户上传的文件)。
最佳答案
您可以使用 resource
module限制您的进程及其子进程可用的资源。
如果您需要在内存中解压缩,那么您可以设置 resource.RLIMIT_AS
(或 RLIMIT_DATA
、RLIMIT_STACK
),例如,使用上下文管理器自动恢复到以前的值:
import contextlib
import resource
@contextlib.contextmanager
def limit(limit, type=resource.RLIMIT_AS):
soft_limit, hard_limit = resource.getrlimit(type)
resource.setrlimit(type, (limit, hard_limit)) # set soft limit
try:
yield
finally:
resource.setrlimit(type, (soft_limit, hard_limit)) # restore
with limit(1 << 30): # 1GB
# do the thing that might try to consume all memory
如果达到限制; MemoryError
引发。
关于python - 如何保护自己免受 gzip 或 bzip2 炸弹的伤害?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13622706/
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
请原谅这个有趣的标题,我用它来比喻“zip bomb”。是否可以创建一个 Scala 源文件,该文件在编译时会生成大量类文件(或非常大的单个类文件)?有什么办法可以让类文件的大小比源文件的大小线性增长
我玩 Unix 有一段时间了,我刚刚发现了一段可爱的代码,每个人都称之为 fork 炸弹::(){ :|:& };:。我想尝试一下,但我知道它会像疯了一样滞后我的计算机,所以我只是想知道是否有人可以给
如果您已经登录系统,如何阻止 fork 炸弹? 最佳答案 斯雷, 如果您在 shell 中仍然拥有“控制权”,则可以尝试使用 ps 和 grep,以及一些 awk,然后是一个循环,以关闭包括父进程在内
可以使用 fork 炸弹(无限 fork )进行拒绝服务攻击。进程表很快就会满,系统就会崩溃。 在线编译器(如编程竞赛)如何处理此类代码。他们有时间限制吗?如果某些程序有几秒的时间限制,它们的进程表将
This question关于 zip 炸弹自然而然地把我带到了 Wikipedia page关于这个话题。文章提到了一个 45.1 kb 的 zip 文件解压缩到 1.3 艾字节的示例。 首先用于创
我正在学习C,遇到了一个小问题。在维基百科和 StackOverflow 上阅读了有关 fork() 炸弹的内容后。我想实现相同的功能,但使用命令行参数。 我想无休止地调用 firefox/chrom
我正在使用 XercesDOMParser 在 linux (c++) 中读取 xml 文件,我想防止 xml 炸弹(Billion 笑)所以我设置了这些属性: parser->setDoNamesp
`#include #include int main(int argc, char **argv){ int pid = 0; int forever; static c
我写了一些这样的代码: std::vector unzip(std::vector const& compressed) { std::vector decompressed; boost
当我有时使用 Apache POI 创建 xlsx 文件时(当文件很大时),它会创建这样一个文件,该文件无法由同一个 Apache POI 打开,而 MS Excel 或 LibreOffice Ca
我使用 Nodejs 应用程序(expressjs、request 等)在网络主机上托管一个网站。 Web 主机有一个 apache 终端,我可以从其中调用 node app.js & 或 forev
代码如下 XmlDocument xdoc = new XmlDocument(); String xml = @"" + "" +
我是一名优秀的程序员,十分优秀!