是否可以在unix中限制未压缩的压缩文件的大小?

时间:2012-09-06 19:33:43

标签: php unix unzip

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

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

无论如何都要这样做(检查解压缩的文件大小)解压之前? (出于安全原因)。

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

1 个答案:

答案 0 :(得分: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

您可能还希望对文件数量进行限制,或者为每个文件添加一个常量,以考虑每个文件的元数据大小。虽然你不能轻易得到一个精确的数字,但每个文件增加几百字节到几千字节是一个合理的估计。