提取用户上传的档案而不暴露给ZipBombs?

时间:2010-11-28 12:26:08

标签: php upload archive

我的问题很简单:如何确保(或阻止)用户上传提取时填充整个光盘空间(所谓的ZipBomb)的存档?我正在使用PHP。

1 个答案:

答案 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!
}