问题概述:
- 需要允许通过网络表单上传ZIP文件(以及
tgz
和更多压缩的目录树) - 应该提取zip文件以处理其内容
- 计划使用Archive::Extract进行提取
- 这里有像ZIP BOMBS这样的东西...
问题是:Archive::Extract可以在底层使用纯Perl模块或命令行程序。一些纯Perl模块(如Archive::Tar和Compress::unLZMA)将整个存档的内容加载到内存中,这可能在您的系统上不可行。考虑将全局变量$Archive::Extract::PREFER_BIN设置为1,这将优先使用命令行程序并且不会消耗太多内存。
- 当我设置
$Archive::Extract::PREFER_BIN = 1
时,我是否足够保护自己免受ZIP-BOMB之类的攻击? $Archive::Extract::PREFER_BIN可以保护我免受过多内存使用的影响,但标准的
unzip
、tar -z
和unrar
二进制文件是否能够抵御类似于zip炸弹的攻击?如果不能,如何安全地处理上传的压缩
目录树
?(因此这里不仅有一个文件在例如zip归档
中。)