【发布时间】:2011-05-16 20:27:50
【问题描述】:
我的问题很简单:我如何确保(或阻止)用户上传提取后会填满整个磁盘空间的存档(所谓的 ZipBomb)?我正在使用 PHP。
【问题讨论】:
-
可以,但是除了Java的
ZipInputStream之外没有其他解决方法。 -
先列出它的内容并检查解压后的尺寸?
我的问题很简单:我如何确保(或阻止)用户上传提取后会填满整个磁盘空间的存档(所谓的 ZipBomb)?我正在使用 PHP。
【问题讨论】:
ZipInputStream之外没有其他解决方法。
在提取您的档案之前,使用 PHP Zip 库函数确保在提取时内容在总大小限制内。
例如:
$zip = zip_open('uploaded.zip');
$file = zip_read($zip);
$totalsize = 0;
while ($file) {
$totalsize += zip_entry_filesize($file);
$file = zip_read($zip); // read next file
}
zip_close($zip);
if ($totalsize > SIZE_LIMIT) {
// not allowed!
}