PHP识别文件伪装(文件上传)
导读:收集整理的这篇文章主要介绍了PHP识别文件伪装(文件上传),觉得挺不错的,现在分享给大家,也给大家做个参考。问题:文件上传时候需要验证上传的文件是否合法,文件伪装如何识别?一个简单测试:把txt文件后缀直接改成jpg;上传<!DOCT...
收集整理的这篇文章主要介绍了PHP识别文件伪装(文件上传),觉得挺不错的,现在分享给大家,也给大家做个参考。问题:
文件上传时候需要验证上传的文件是否合法,文件伪装如何识别?
一个简单测试:把txt文件后缀直接改成jpg; 上传
!DOCTYPE htML> html> tITle> test/title> body> form enctype="multipart/form-data" action="test.php" method="POST"> !-- MAX_FILE_SIZE must PRecede the file input field --> input type="hidden" name="MAX_FILE_SIZE" value="102400" /> !-- Name of input element determines name in $_FILES array --> Send this file: input name="userfile" type="file" /> input type="submit" value="Send File" /> /form> /body> /html>
1.通过$_FILES['userfile']['type'];获取文件后缀名;
$data = $_FILES['userfile']; var_dump($data); /**结果**//*array(5) { ["name"]=> string(8) "test.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(26) "/private/VAR/tmp/phpfyE3EC" ["error"]=> int(0) ["size"]=> int(19)} */
没有检测出来;
2.用pathinfo()函数来获取文件路径的信息
$data = $_FILES['userfile']; // var_dump($data); var_dump(pathinfo($data['name'])); /**结果**//*array(4) { ["dirname"]=> string(1) "." ["basename"]=> string(8) "test.jpg" ["extension"]=> string(3) "jpg" ["filename"]=> string(4) "test"} */
没有检测出来;
3.PHP的扩展fileinfo(需要安装开启)
$data = $_FILES['userfile']; $filename = $data['tmp_name']; $finfo = finfo_open(FILEINFO_MIME_TYPE); //返回 mime 类型。 自 PHP 5.3.0 可用。$mimetype = finfo_file($finfo, $filename); finfo_close($finfo); var_dump($mimetype); /**结果**///string(10) "text/plain"
可!可!可!监测到文件MIME类型并不是一个jpg!
更多相关php知识,请访问php教程!
以上就是PHP识别文件伪装(文件上传)的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PHP识别文件伪装(文件上传)
本文地址: https://pptw.com/jishu/596188.html