我的问题很简单:如何确保(或阻止)用户上传提取时填充整个光盘空间(所谓的ZipBomb)的存档?我正在使用PHP。
答案 0 :(得分:2)
在提取存档之前,请使用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!
}