当前位置:  编程技术>php

php检测上传excel文件类型的示例代码

    来源: 互联网  发布时间:2014-10-12

    本文导语:  本节内容: 检测上传excel文件类型 为大家介绍一种比较高端检测上传文件类型的方法,可以防止后缀名修改等低端的检测错误。 MIME类型 在把输出结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文...

本节内容:
检测上传excel文件类型

为大家介绍一种比较高端检测上传文件类型的方法,可以防止后缀名修改等低端的检测错误。

MIME类型
在把输出结果传送到浏览器上的时候,浏览器必须启动适当的应用程序来处理这个输出文档。这可以通过多种类型MIME(multipurpose internet mail extensions)来完成。在http中,MIME类型被定义在content-type header中。

例如,如果客户端上传一个excel文件到服务器上,那么这是的mime类型就是“application/vnd.ms-excel”。在php中,可以通过$_FILE["type"]获得上传文件类型。
最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户端解释为HTML文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。

每个MIME类型由两部分组成,前面是数据的大类别,后面定义具体的种类。(具体可以查询mime类型表)

文件检测弊端
文件扩展名检测漏洞(ps:文件扩展名可以被任意伪造)
文件MIME类型判断不能使用$_FILES['userfile']['type'](ps:根据PHP官方的文档说明,该值完全可以被伪造!
黑客只需修改浏览器的post请求头即可绕过这段代码检查,进而上传任意类型的文件!)

检测方法(针对excel)
通过文件扩展名判断是03的excel文件还是07的excel文件
根据不同的文件,获取不同文件的二进制数据,和file_signature进行对比,我截了03和07的excel的二进制数据图,工具是madedit,大家参考下:
1,03的excel


2,07的excel(07可以参考zip检测)

检测程序:
 

代码示例:

    
 
 

您可能感兴趣的文章:

  • php通过socket_bind()设置IP地址代码示例
  • php循环创建目录示例分享(php创建多级目录)
  • PHP获取php,mysql,apche的版本信息示例代码
  • php定义数组和使用示例(php数组的定义方法)
  • PHP入侵检测系统 PHPIDS iis7站长之家
  • php递归示例 php递归函数代码
  • php生成数组的使用示例 php全组合算法
  • php分割数组示例
  • php数组随机排序示例
  • PHP 强制下载文件示例代码
  • php动态生成函数示例
  • php输入流php://input使用示例(php发送图片流到服务器)
  • php循环创建多级目录示例
  • php二维数组转换为字符串示例
  • php求两个目录的相对路径示例(php获取相对路径)
  • PHP数组根据值获取Key的简单示例
  • php比较绝对时间的大小示例
  • php cli换行示例
  • 设置php页面编码的两种方法示例介绍
  • php类声明和php类使用方法示例分享
  • PHP邮箱地址正确性验证示例
  • php中检测变量是否是一个对象的is_object函数介绍及用法举例
  • php判断字符串是否存在 php字符串检测代码
  • 安装好的Redhat Linux 8.0,带Apache和php支持,安装上Mysql后,运行正常,但检测提示php不支持Mysql,如何解决?
  • PHP的浏览器检测库 Detector
  • 检测XSS漏洞的扩展 PHP Taint
  • php检测用户是否用手机(Mobile)访问网站
  • PHP入侵检测系统 PHPIDS
  • php检测iis环境是否支持htaccess的方法
  • PHP代码漏洞检测工具 PHPSecurityScanner
  • php检测用户是否用手机(Mobile)访问网站的类
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php 判断服务器操作系统的类型
  • 有关于PHP中常见数据类型的汇总分享
  • php如何判断图片颜色类型?实例教程
  • PHP取二进制文件头判断文件类型
  • PHP实现根据设备类型自动跳转相应页面的方法
  • php强制下载指定类型的文件
  • PHP的变量类型和作用域详解
  • 解析PHP强制转换类型及远程管理插件的安全隐患
  • PHP标记风格、注释、表单获取、字符串类型、变量解析的实例解析
  • php操作redis中的hash和zset类型数据的方法和代码例子
  • PHP内核探索:变量存储与类型使用说明
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • IIS7配置PHP图解(IIS7+PHP_5.2.17/PHP_5.3.5)
  • PHP 5.4.19 和 PHP 5.5.3 发布及下载地址
  • PHP转换器 HipHop for PHP
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • PHP 框架 Pop php
  • PHP去除html标签,php标记及css样式代码参考
  • PHP的JavaScript框架 PHP.JS
  • PHP 'ext/soap/php_xml.c'不完整修复存在多个任意文件泄露漏洞
  • php服务器探针显示php服务器信息
  • php安装完成后如何添加mysql扩展
  • PHP缓存加速器 Alternative PHP Cache (APC)
  • PHP的substr() 函数用法
  • PHP源文件加密工具 PHP Screw
  • PHP介绍及学习网站推荐
  • PHP自动化测试 PHP-QAT
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • PHP 的 HTTP 客户端库 PHP Buzz
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • PHP 调试工具 PHP_Dyn




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3