4

我正在制作一个 PHP 脚本来检索用户给定的 zip 文件,解压缩它,并使用ZipArchive对象对其中的文件做一些事情。我怎样才能避免像42.zip这样的拉链炸弹?

4

1 回答 1

1

查看 zip_entry_filesize:http ://php.net/manual/en/function.zip-entry-filesize.php

它应该为您提供 .zip 文件中未压缩存档的实际大小。这是手册页评论中提供的示例函数:

function get_zip_originalsize($filename) {
    $size = 0;
    $resource = zip_open($filename);
    while ($dir_resource = zip_read($resource)) {
        $size += zip_entry_filesize($dir_resource);
    }
    zip_close($resource);

    return $size;
}

$size = get_zip_originalsize('file.zip');
echo "original size: $size bytes\n";
于 2012-11-07T22:37:41.143 回答