php上传文件类型判断

1.先讲下php文件上传该注意哪些安全问题吧

          文件类型mime和后缀名判断 (可能会被用户恶意修改)

          文件一定要重命名

          文件存放目录不应用可执行权限

          文件大小的控制.

2.说说这个文件类型的判断

    根据后缀名判断:大家都知道,不是很准确,可能会被用户恶意修改

    比较有效的方法就是判断文件的二进制流的前几个字节的数据

    相应文件对应的二进制数据,大家可以在这儿网址下去查

   http://www.filesignatures.net/index.php?page=all¤tpage=4&order=EXT

   判断方法:

$fp = fopen($filename, 'rb');

         $buffer = fread($fp,8); //读取几个字节应该参照上面的网站上查询的结果为准

         fclose($fp);

         $buffer = unpack('H*', $buffer);  //转换为16进制

         $buffer = unpack('C8code',$buffer)//也可以转换为10进制

         然后用$buffer 与网址上的数据进行对比即可.

        自己实现下哈,实践出真知.

        有时候对于图片可能会造假,上述方法可能查不出来,使用以下方法吧

         function_exists('getimagesize') && !@getimagesize($filename)

    目前所知的比较好的方法了,大家如果还有其他的方式,欢迎分享



你可能感兴趣的:(PHP)