1

我正在实施一项服务,我必须提取用户上传的 zip 文件。

为了避免磁盘溢出,我必须限制 zip 文件大小和解压缩文件大小。

在解压缩之前是否有这样做(检查解压缩文件的大小)?(出于安全原因)。

我正在使用从 PHP 脚本调用的 unix。

4

1 回答 1

1

由于您使用 PHP,请使用其ZipArchive库。

$zip = zip_open($file);
$extracted_size = 0;
while (($zip_entry = zip_read($zip))) {
    $extracted_size += zip_entry_filesize($zip_entry);
    if ($extracted_size > $max_extracted_size) {
        // abort
    }
}
// do the actual unzipping

您可能还想限制文件的数量,或者为每个文件添加一个恒定的数量,以考虑每个文件的元数据大小。虽然您无法轻易获得准确的数字,但将几百字节添加到每个文件的几千字节是一个合理的估计。

于 2012-09-06T20:12:08.613 回答