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

当你通过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漏洞来触发而已。 基本图片渲染的程序我不想研究,看起来基本已经成熟。 这里主要谈谈请求一个web,response的头部到底要注意什么,必须要写成什么样子才能避免图片中执行异常代码。 我拿了一个百度的图片

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏科技前线

升级Bash修复Shellshock漏洞

Shellshock,又称Bashdoor,是一个安全漏洞,于2014年9月12日被发现,直到9月24日被赋予了CVE编号CVE-2014-6271才得以控制。...

18920
来自专栏无所事事者爱嘲笑

ionic2 处理android硬件返回按钮

14140
来自专栏技术博客

ExtJs十一(ExtJs Mvc图片管理之一)

图片管理要在两个地方使用:一是标签页内的图片管理,一是文章内容编辑时嵌套到插入图片的窗口内。因而,将图片管理做成一个扩展比较方便。当然,做成MVC模式也行,不争...

15730
来自专栏黑泽君的专栏

ubuntu16.04安装谷歌拼音

  System Settings --> Language Support --> Install/Remove Languages   选中chinese,...

25920
来自专栏慎独

Unity5.6与Xcode8.3原生工程整合交互

17010
来自专栏前端儿

前端代码乱糟糟?是时候引入代码质量检查工具了

为了统一团队的代码规范,除了一纸规范说明之外,还需要引入工具进行限制。虽说工具并不能完全实现规范中的规则,但至少能够在一定程度上缓解代码不统一的局面。

38810
来自专栏王二麻子IT技术交流园地

十一、VueJs 填坑日记之使用Amaze ui调整列表和内容页面

上一篇博文我们整合了Amaze ui,并且调整了一个头部header和底部footer文件,其实做起来也很简单,只要按照步骤来做,完全没有问题。今天我们来重新调...

317100
来自专栏DeveWork

WordPress 免插件仅代码实现 Gravatar 头像缓存

如果你还不知道是神马东东,请先往《设置你的Gravatar头像的方法》一文了解相关资料。因为我大中华局域网的原因, Gravatar 头像所托管的网站有时候会挂...

223100
来自专栏PPV课数据科学社区

pyspider 爬虫教程(二):AJAX 和 HTTP

在上一篇pyspider 爬虫教程 (1):HTML 和 CSS 选择教程中,我们使用 self.crawl API 抓取豆瓣电影的 HTML 内容,并使用 C...

36070
来自专栏程序员同行者

django xadmin 集成DjangoUeditor富文本编辑器

41620

扫码关注云+社区

领取腾讯云代金券