首先需要明确的是,文件上传是网站开发中常用的功能之一,但是需要注意上传文件的类型和格式,避免网站被恶意攻击者利用漏洞来上传危险文件。
为了方便开发者识别文件类型和合法上传文件格式,一些固定的后缀名和文件类型对照表已经被制定和广泛使用。其中,php文件上传后缀名与文件类型对照表汇总了大部分常用的文件类型和对应的后缀名,可以供开发者参考。
下面来介绍如何使用该对照表。首先要明确如何获取上传文件的格式信息。在PHP中,可以通过$_FILES
全局变量中的type
属性获取文件的MIME类型信息。这个MIME类型与文件后缀名是对应的,通过对照表,就可以得到这个文件的合法后缀名,并进行验证。
示例一:检查图片上传格式
前端界面可能提供了一个上传图片的功能,我们需要检查上传图片的格式是否正确。假设前端提交的表单中包含一个文件输入框和一个提交按钮,可以通过以下代码对上传的图片格式进行验证:
//获取上传文件的MIME类型
$mime = $_FILES['image']['type'];
//定义合法的文件格式
$allowed = [
'jpg' => 'image/jpeg',
'png' => 'image/png',
'gif' => 'image/gif',
];
//根据MIME类型获取后缀名
$ext = array_search($mime, $allowed);
//判断是否为合法文件格式
if ($ext === false) {
echo "上传图片格式不合法";
} else {
//进行其他操作,比如保存上传的图片
}
在上述代码中,首先获取上传的文件的MIME类型,然后定义了一个包含合法文件格式和对应MIME类型的数组。接着根据获取到的MIME类型查找对照表,获取对应的合法后缀名。最后,判断获取到的后缀名是否在合法文件格式数组中,如果是,就可以进行其他操作,否则提示错误信息。
示例二:禁止上传危险文件
假设在系统中,管理员可以上传一些配置文件,但是存在一些危险的文件类型必须禁止上传,比如PHP脚本文件,在这种情况下,可以使用对照表禁止上传危险文件。
//获取上传文件的MIME类型
$mime = $_FILES['config']['type'];
//定义不允许上传的文件格式
$denied = [
'php' => 'application/x-php',
'aspx' => 'application/octet-stream'
];
//根据MIME类型获取后缀名
$ext = array_search($mime, $denied);
//判断是否为危险的文件格式
if ($ext !== false) {
echo "上传危险文件";
} else {
//进行其他操作,比如保存上传的配置文件
}
在上述代码中,$denied
数组定义了不允许上传的危险文件格式和对应的MIME类型,如果上传的文件类型在数组中被定义了,则提示上传危险文件。
本文链接:https://my.lmcjl.com/post/14918.html
展开阅读全文
4 评论