我目前正在构建一项功能,允许我的用户上传文档以发送给我网站上的其他用户。
现在我了解了允许用户上传包含将要执行的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类型)仍然是一个可行的选项吗?
感谢您的阅读。
答案 0 :(得分:0)
我检查原始文件名。我还使用我想要的扩展名重命名上传的文件。因此,如果有人上传.exe文件,则有两个障碍:
Zips是丑陋的,因为它们可能包含坏文件,所以需要解压缩它们并检查和重命名每个文件以及删除任何坏文件。
取值
答案 1 :(得分:0)
也许有人会有用的。
private function file_contains_php($file) {
$contents = file_get_contents($file);
$position = strpos($contents, '<?php');
return $position !== false;
}