php图片上传检测是否为真实图片格式

2026-03-01 04:09:33

1、第一种方法:如果是只是单纯判断是否是图片格式的话,我使用  getimagesize 方法function checkIsImage($filename){    $alltypes = '.gif|.jpeg|.png|.bmp';//定义检查的图片类型    if(file_exists($filename)){        $result= getimagesize($filename);        $ext = image_type_to_extension($result']);        return stripos($alltypes,$ext);    }else{        return false;    }}

php图片上传检测是否为真实图片格式

php图片上传检测是否为真实图片格式

2、第二种方法比较强大一些,能判断多种格式function getReailFileType($filename){    $file    = fopen($filename, "rb");    $bin    = fread($file, 2); //只读2字节    fclose($file);    $strInfo    = @unpack("C2chars", $bin);    $typeCode    = intval($strInfo['chars1'].$strInfo['chars2']);    $fileType    = '';    switch($typeCode){        case 7790:            $fileType = 'exe';break;        case 7784:            $fileType = 'midi'; break;        case 8297:            $fileType = 'rar'; break;        case 255216:            $fileType = 'jpg';break;        case 7173:            $fileType = 'gif';break;        case 6677:            $fileType = 'bmp';break;        case 13780:            $fileType = 'png';break;        default:            $fileType = 'unknown';    }    return $fileType;}

php图片上传检测是否为真实图片格式

3、第三种方法:

PHP  gd类库函数提供了一个exif_imagetype() 函数, 用来读取图像的第1个字节, 还会对图片的签名做检查。 如果格式不对,会返回false。 其实啊, 这个方法和第一种方法有异曲同工之妙。 但是因为这个是库函数,效率要比第一种方法高得多。

此函数用法很简单,传入路径,然后通过判断是否等于某个常量,  例如 gif格式的IMAGETYPE_GIF

php图片上传检测是否为真实图片格式

4、第四种方法:php重绘

效率很低的一种方法,但也是一种思路: 把传输过来的文件,不论什么文件都以resource 类型绘到图片中去, 如果是图片,能还原出来。如果不是图片,那绘画不出来,而且里面的危险代码也没有了。

具体请看:

php图片上传检测是否为真实图片格式

5、总结: 我曾经在网上看到过有人说:相信懂得php的人都用过XX函数。 我打开一看,就是一个使用后缀来判断上传类型的函数。 同学在做类似功能的时候一定要揭开表现看到本质,否则经过伪装的图片在上传之后,会对服务器造成极大安全隐患。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:176
  • 阅读量:99
  • 阅读量:187
  • 阅读量:42
  • 阅读量:149
  • 猜你喜欢