加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 解压缩用户提交的文件的安全性

发布时间:2020-12-13 17:54:04 所属栏目:PHP教程 来源:网络整理
导读:这里不仅仅是编码问题,而是与安全性有关的一般性问题. 我目前正在开发一个允许用户提交内容的项目. 该内容的关键部分是用户上传Zip文件. zip文件应该只包含mp3文件. 然后我将这些文件解压缩到服务器上的目录,以便我们可以在网站上传输音频供用户收听. 我担心
这里不仅仅是编码问题,而是与安全性有关的一般性问题.
我目前正在开发一个允许用户提交内容的项目.
该内容的关键部分是用户上传Zip文件.
zip文件应该只包含mp3文件.

然后我将这些文件解压缩到服务器上的目录,以便我们可以在网站上传输音频供用户收听.

我担心的是,这会打开一些可能具有破坏性的zip文件.
我过去读过’zipbombs’,显然不希望恶意zip文件造成损坏.

那么,有没有一种安全的方法呢?
我可以扫描zip文件而不先解压缩,如果它包含MP3以外的任何内容,请删除它或向管理员发出警告?

如果它有所作为我正在Wordpress上开发网站.
我目前使用wordpress的内置上传功能让用户将zip文件上传到我们的服务器(我不确定wordpress中是否有任何形式的安全性来扫描zip文件?)

代码,只从zip中提取MP3,忽略其他内容
$zip = new ZipArchive();
$filename = 'newzip.zip';

if ($zip->open($filename)!==TRUE) {
   exit("cannot open <$filename>n");
}

for ($i=0; $i<$zip->numFiles;$i++) {
   $info = $zip->statIndex($i);
   $file = pathinfo($info['name']);
   if(strtolower($file['extension']) == "mp3") {
        file_put_contents(basename($info['name']),$zip->getFromIndex($i));
   }

}
$zip->close();

我会使用像id3_get_version(http://www.php.net/manual/en/function.id3-get-version.php)这样的东西来确保文件的内容也是mp3

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读