php检测上传excel文件类型
前言
MIME类型
文件检测弊端
- 文件扩展名检测漏洞(ps:文件扩展名可以被任意伪造)
- 文件MIME类型判断不能使用$_FILES['userfile']['type'](ps:根据PHP官方的文档说明,该值完全可以被伪造!黑客只需修改浏览器的post请求头即可绕过这段代码检查,进而上传任意类型的文件!)
检测方法(针对excel)
- 通过文件扩展名判断是03的excel文件还是07的excel文件
- 根据不同的文件,获取不同文件的二进制数据,和file_signature进行对比,我截了03和07的excel的二进制数据图,大家可以参考一下,工具是madedit
- 03的excel
- 07的excel(07可以参考zip检测)
检测程序
/*** Detect upload file type* * @param array $file * @return bool $flag*/private function detectUploadFileMIME($file) {// 1.through the file extension judgement 03 or 07$flag = 0;$file_array = explode ( ".", $file ["name"] );$file_extension = strtolower ( array_pop ( $file_array ) );// 2.through the binary content to detect the fileswitch ($file_extension) {case "xls" :// 2003 excel$fh = fopen ( $file ["tmp_name"], "rb" );$bin = fread ( $fh, 8 );fclose ( $fh );$strinfo = @unpack ( "C8chars", $bin );$typecode = "";foreach ( $strinfo as $num ) {$typecode .= dechex ( $num );}if ($typecode == "d0cf11e0a1b11ae1") {$flag = 1;}break;case "xlsx" :// 2007 excel$fh = fopen ( $file ["tmp_name"], "rb" );$bin = fread ( $fh, 4 );fclose ( $fh );$strinfo = @unpack ( "C4chars", $bin );$typecode = "";foreach ( $strinfo as $num ) {$typecode .= dechex ( $num );}echo $typecode;if ($typecode == "504b34") {$flag = 1;}break;}// 3.return the flagreturn $flag;}
参考链接
php检测上传excel文件类型相关推荐
- php上传查询excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例
PHP上传Excel文件导入数据到MySQL数据库示例2020-06-20 00:34:11 最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里 ...
- php 上传excel到mysql_PHP上传Excel文件导入数据到MySQL数据库示例
最近在做Excel文件导入数据到数据库.网站如果想支持批量插入数据,可以制作一个上传Excel文件,导入里面的数据内容到MySQL数据库的小程序. 要用到的工具: ThinkPHP:轻量级国产PHP开 ...
- vue之 上传 excel文件
目录 vue之 上传 excel文件 父组件 UploadExcel.vue 效果 vue之 上传 excel文件 父组件 <upload-excel-component :on-success ...
- 实现web前端上传excel文件到flask服务器
这里有两种方法:1. html方式:2. javascript方式(jQuery+ajax) 第1种方法:html方式 这种方法直接通过设计form表单相关属性实现将excel表格上传到服务器,并在服 ...
- springboot实现上传Excel文件与数据库中的数据进行比对
springboot实现上传Excel文件与数据库中的数据进行比对 首先先写好文件上传的接口,然后上传需要比对数据的文件,在点击数据比对 下面是一部分数据比对的代码: 后端controller部分: ...
- Django框架(上传Excel文件并读取)
博主今天整理下Django框架中上传Excel文件并读取 博主是要在管理平台中新增用例的维护功能,想着通过上传Excel文件来展示用例,下面是项目的路径图: 首先先建数据库模型 model.py 可以 ...
- 2008下php上传文件崩溃,php – 当用户反复尝试上传无效文件类型时,网站崩溃
我试图理解错误-- 我有一个允许用户上传CSV的网络应用程序.如果文件类型不是CSV,则不会发生任何操作,页面只显示"无效的文件类型". 如果用户尝试上载无效的文件类型并反复单击触 ...
- 服务器上传excel文件并读取数据,asp.net上传Excel文件并读取数据的实现方法
前言 本文主要给大家介绍了关于asp.net上传Excel文件并读取数据的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 实现如下: 前台代码:使用服务端控件实现上传 服务端 ...
- php上传常见文件类型和$_FILES[file][type]
php上传常见文件类型对应的$_FILES["file"]["type"]. xls application/vnd.ms-excel xlsx applica ...
最新文章
- 性能超越图神经网络,将标签传递和简单模型结合实现SOTA
- WEB前端性能优化小结
- 聊一聊:MyBatis和Spring Data JPA的选择问题
- GoldenGate for Java adapter介绍二(代码篇)
- CDN技术之--流媒体CDN系统的组成
- 通过curl获取网页访问时间
- 从outside对ASA防火墙身后ACS4.x进行管理测试
- 分页及页码导航 用户控件
- servlet过滤器(Filter)
- 机器视觉光源知识总结(二)
- 游戏夜读 | 游戏关卡设计师
- Manger配置同步任务
- 云计算实战应用案例精讲-【深度学习】多模态融合(论文篇三)
- HDU 6441(费马大定理+奇偶数列法)
- input 测试工具 --evtest
- Linux系统设置共享命令,Linux 基本命令操作 (文件共享) 一
- 使用机器人工具箱在matlab上进行六轴机器人(6R)运动学建模【个人简记】
- 静息态fMRI状态依赖的有效连接
- Appium H5自动化测试
- chm打开秒退_CHM文件打开方式