4

オブジェクトを使用して、ユーザーが指定した zip ファイルを取得し、解凍し、その中のファイルを処理する PHP スクリプトを作成していZipArchiveます。42.zipのような 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 に答える