文档章节

怎么判断一个文件是一张图片

xueyi28
 xueyi28
发布于 2016/05/22 15:58
字数 406
阅读 15
收藏 0
点赞 2
评论 0

当你通过Http协议下载到一个文件,你怎么判断这个文件是一个纯的图片文件,php中提供了这样的方法:

<?php
//$file = 'http://bdimg.share.baidu.com/static/images/r6.gif';
//$file='http://www.baidu.com/img/bd_logo1.png';
$file = 'http://php.net/manual/en/function.exif-imagetype.php';
var_dump(@exif_imagetype($file));

 

file可以是远程或者本地的一个文件,exif_imagetype会读取数据流的图片格式描述字段来确定图片的格式,这样基本可以通过这个方式可以确定这个文件的格式,但是黑客并不会善罢甘休,他们会在一张图片文件中追加需要执行的额外的代码,反而用图片的格式做掩护,这样我们即使校验了图片的大小也仅仅是增加了一丁点图片验证的难度而已。
在我看来黑客无非想通过图片数据隐藏一些攻击代码,再利用渲染程序的漏洞或者web漏洞来触发而已。
基本图片渲染的程序我不想研究,看起来基本已经成熟。
这里主要谈谈请求一个webresponse的头部到底要注意什么,必须要写成什么样子才能避免图片中执行异常代码。
我拿了一个百度的图片

 

Accept-Ranges:bytes
Cache-Control:max-age=315360000
Connection:Keep-Alive
Content-Length:5331
Content-Type:image/png
Date:Fri, 26 Jun 2015 15:33:39 GMT
ETag:"14d3-4ff90199dfb40"
Expires:Mon, 23 Jun 2025 15:33:39 GMT
Last-Modified:Fri, 01 Aug 2014 11:57:57 GMT
Server:Apache

 

 

 

另外我将http的协议重新研究了一遍:
http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html

本文转载自:http://blog.csdn.net/kangqi7000/article/details/51475429

共有 人打赏支持
xueyi28
粉丝 7
博文 88
码字总数 33322
作品 0
南宁
Python中的startswith和endswith函数使用实例

在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某个字符结束。 startswith()函...

Betty__ ⋅ 2016/09/27 ⋅ 0

ng-Cordova插件之fileTransfer的使用

其实我觉得gitHub上的文档说的已经很详细了,但是鉴于是一个比较常用的插件以及貌似使用方法稍微的要比ng-camera那样看起来简单点,所以这里稍微的写写记录下 $cordovaFileTransfer的用处:用...

邪气小生 ⋅ 2015/11/13 ⋅ 2

49.(android开发)imageView图片切换

android 的图片显示控件 imageView 是很常见的。显示图片比较简单,设置图片源就可以了。 一般我们使用 APP 内的资源来实现。图片原始文件就放在 res 下的 drawable 或 mipmap 内。 我这次想...

厚土火焰山 ⋅ 2017/12/22 ⋅ 0

异常处理 扩展 PHP

php 异常处理怎么扩展?java有强大的异常处理,但是php的异常处理比较简单,每次写一个比较复杂的方法都要有大量的 if...else..判断,这对phper的思维逻辑真是个极大的考验。(比如说一个简单...

风雪中的舞者 ⋅ 2015/08/06 ⋅ 2

python爬取暖享图片

目标网页:http://www.axlcg.com/wmxz/1.html 首先取得第一页每一个图集的url 可以看到图集的url实在ul class 为homeboy-ul clearfix line-dot底下的li中的a标签里面,所以我们要 一层一层地...

云胡_ ⋅ 2017/11/24 ⋅ 0

weui上传文件完整例子,后台Java接受,SSM框架,要解决的问题是接受2张以上图片

weUI的Uploader组件,目前已实现的功能是,一个input type=file,上传图片,有压缩预览,最多6张,每读取一张,js就添加了节点预览一张,但是表单直接提交时,后台获得的是文件标签最后一次操...

辉煌霸猪 ⋅ 2017/11/30 ⋅ 2

Android PowerImageView实现,可以播放动画的强大ImageView

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11100315 我个人是比较喜欢逛贴吧的,贴吧里总是会有很多搞笑的动态图片,经常看一看就会感觉欢乐很多,可以释放掉不少平...

军歌 ⋅ 2014/02/19 ⋅ 0

Hadoop的Map和Reduce中能不能打开HDFS文件系统中的文件?

我要做一个图片处理的程序,但是,如果一开始就把整个图片都读进去的话,那么这么大一块数据就要被传递几次(我现在编写的程序是传递给Map要传递一张图片的大小,Map传递给Reduce又要传递一张...

KevinWen ⋅ 2014/04/21 ⋅ 1

java图片问题 关于图片比对识别

问题有三个: 1.有一个excle文件,文件中有一个表单,其中有一列是png图片。现在需要将该Excel导入到javaweb项目中,这个导入操作应该如何处理这一列图片; 2.两张长宽相同的png图片,如何辨...

姚一天 ⋅ 2016/11/23 ⋅ 2

前端本地文件操作与上传

前端无法像原生APP一样直接操作本地文件,否则的话打开个网页就能把用户电脑上的文件偷光了,所以需要通过用户触发,用户可通过以下三种方式操作触发: 通过input type="file" 选择本地文件 ...

人人网FED ⋅ 2017/11/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

645. Set Mismatch - LeetCode

Question 645. Set Mismatch Solution 思路: 遍历每个数字,然后将其应该出现的位置上的数字变为其相反数,这样如果我们再变为其相反数之前已经成负数了,说明该数字是重复数,将其将入结果r...

yysue ⋅ 18分钟前 ⋅ 0

Confluence 6 从生产环境中恢复一个测试实例

请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明。 很多 Confluence 的管理员将会使用生产实例运行完整数据和服务的 Confluence 服务器,同时还会设置一个...

honeymose ⋅ 22分钟前 ⋅ 0

Python这么强?红包杀手、消息撤回也可以无视,手机App辅助!

论述 标题也许有点不好理解,其实就是一款利用Python实现的可以监控微信APP内的红包与消息撤回的助手。不得不说,这确实是一款大家钟意的神器。 消息撤回是一件很让人恶心的事,毕竟人都是有...

Python燕大侠 ⋅ 34分钟前 ⋅ 0

压缩打包介绍、gzip压缩工具、bzip2压缩工具、xz压缩工具

压缩打包介绍 压缩的好处不仅能节省磁盘空间而且在传输的时候节省传输时间和网络带宽 windows系统下文件带有 .rar .zip .7z 后缀的就是压缩文件 linux系统下则是 .zip, .gz, .bz2, .xz, ...

黄昏残影 ⋅ 38分钟前 ⋅ 0

观察者模式

1.利用java原生类进行操作 package observer;import java.util.Observable;import java.util.Observer;/** * @author shadow * @Date 2016年8月12日下午7:29:31 * @Fun 观察目标 **/......

Cobbage ⋅ 41分钟前 ⋅ 0

Ubuntu打印服务器配置

参考:https://blog.csdn.net/gsls200808/article/details/50950586 https://blog.csdn.net/jiay2/article/details/80252369 https://wiki.gentoo.org/wiki/HPLIP 由于媳妇儿要大量打印资料,......

大熊猫 ⋅ 47分钟前 ⋅ 0

面试的角度诠释Java工程师(二)

原文出处: locality 续言: 相信每一位简书的作者,都会有我这样的思考:怎么写好一篇文章?或者怎么写好一篇技术类的文章?我就先说说我的感悟吧,写文章其实和写程序是一样的。为什么我会...

颖伙虫 ⋅ 49分钟前 ⋅ 0

github中SSH的Key

https://help.github.com/articles/connecting-to-github-with-ssh/ https://help.github.com/articles/testing-your-ssh-connection/ https://help.github.com/articles/adding-a-new-ssh-k......

whoisliang ⋅ 50分钟前 ⋅ 0

only_full_group_by

我的mysql是在CentOS7.1下面的5.7.17 在 /etc/my.cnf 文件里加上如下: sql_mode='NO_ENGINE_SUBSTITUTION' 然后,重启Mysql服务 systemctl restart mysqld...

SunHacker ⋅ 今天 ⋅ 0

实际项目(SpringBoot项目)中集成Druid

参考网页 https://blog.csdn.net/liuchuanhong1/article/details/55050131 https://blog.csdn.net/CoffeeAndIce/article/details/78707819 https://www.pocketdigi.com/20170530/1577.html 为......

karma123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部