代码之家  ›  专栏  ›  技术社区  ›  Tower

在不暴露于压缩炸弹的情况下提取用户上传的档案?

  •  3
  • Tower  · 技术社区  · 15 年前

    我的问题很简单:如何确保(或阻止)用户上传一个在提取时填满整个磁盘空间(所谓的zipbarm)的归档文件?我正在使用PHP。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Jon    15 年前

    在提取归档文件之前,请使用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!
    }