我在用户可以上传文件的 PHP 系统中工作。
我正在尝试保护系统免受恶意代码的侵害,因此我正在考虑某种类型的文件黑名单,我必须阻止它们上传。
我知道白名单比黑名单好,这是我常用的方法,但在这种情况下,出于多种原因(我无法控制),我需要将文件列入黑名单,但我仍在寻找安全性(如果可能)。
这是我当前的脚本(我正在检查 MIME 类型以获取文件类型):
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$check= finfo_file($finfo,$file["tmp_name"]);
finfo_close($finfo);
$dangerMime = array('application/x-bsh', 'application/x-sh', 'application/x-shar', 'text/x-script.sh');
if (in_array($check, $dangerMime)) {
//block upload
}
else {
//allow upload
}
当前要阻止的 MIME 类型列表是:
- “应用程序/x-bsh”、“应用程序/x-sh”、“应用程序/x-shar”、“文本/x-script.sh”
我试图阻止任何.sh文件,因为系统在 Apache 下的 CentOS 中运行。还有其他我应该阻止的文件类型吗?
以下是一些重要信息:
服务器是带有 Apache 2.4.6 的 CentOS 7.2。以下是上传目录的权限:
drwxr-xr-x 4 apache apache 4096 Jan 8 12:23 uploads
注意:在这个项目中,我只是作为开发人员,所以我不能更改文件权限。