php上传文件文件类型的判断方法

该博客探讨了在PHP中仅依赖扩展名判断文件类型的风险,并提到了获取更准确文件类型的解决方案,同时提供了文件类型对照表的链接。
摘要由CSDN通过智能技术生成

根据扩展名判断类型的弊端

        正如我刚开始接触 php 一样,我们许多人在使用 php 进行文件的上传和存储时,都会给文件进行重名命并保存到可写文件夹下,然后我们在其中一个失误的地方便是采用上传文件的扩展名作为判断文件类型的依据。这样做其实与后门大开无异,举一个简单的例子,通过扩展名判断一般是字符串的截取判断,或者是使用$_FILE数组判断,然后如果用户上传的文件名为 image.php.png, image.png.php, image.php%****.png 之类的话,判断就会出错。另外,$_FILES['type']可能被篡改。
       夜已深,话不多言。送上我判断文件名的方法:读取文件头四个字节作为判断。
        下面直接上代码,相信略有些php功底的朋友,读来都不成问题。我实现的是仅支持word和pdf文件,且文件大小小于512kb:

	$tmpname = $_FILES ['userfile'] ['tmp_name'];
	if(is_uploaded_file($tmpname)) {
		$mimetype = detectMIME($tmpname);
		$tuozhanming = getFileExt($filename, $mimetype);
		if($tuozhanming == "type_error"){
			echo '仅支持word和pdf文件,且文件大小小于512kb:<a href='.$reurl.'>请重试</a>';
			exit();
		}
	}else{
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值