0

我目前正在构建一项功能,允许我的用户上传文件以发送给我网站上的其他用户。

现在我了解允许用户上传包含将要执行的 PHP 代码的图像的图像可能发生的一些风险。

在发布此问题之前,我在网上进行了研究,并在查看有关 MIME 类型验证的 PHP 文档时发现了这个

$_FILES['userfile']['type']
  This mime type is however not checked on the PHP side and therefore 
  don't take its value for granted.

在此之前,我认为这将是我用来对抗上传错误文件的主要方法,尽管我努力寻找一种安全上传的方法都指向检查上面的 MIME 类型。

理想情况下,我希望用户能够上传 txt、pdf、doc 和 ZIP 文件。

上述方法(检查 MIME 类型)仍然是一个可行的选择吗?

感谢您的阅读。

4

2 回答 2

0

我检查原始文件名。我还使用我想要的扩展名重命名上传的文件。所以如果有人上传 .exe 文件,有两个障碍:

  1. 我检查了文件名,看到了 .exe 并拒绝上传
  2. 我已将所有文件重命名为我自己的一组可能的扩展名,而 .exe 不是其中之一。

Zip 很难看,因为它们可能包含坏文件,因此需要将它们解压缩并检查和重命名每个文件,并删除任何坏文件。

小号

于 2013-09-13T12:20:40.743 回答
0

也许有人会有用。

private function file_contains_php($file) {
        $contents = file_get_contents($file);
        $position = strpos($contents, '<?php');
        return $position !== false;
}
于 2020-05-11T07:54:59.067 回答