前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎么判断一个文件是一张图片 转

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

作者头像
domain0
发布2018-08-02 11:26:32
4170
发布2018-08-02 11:26:32
举报
文章被收录于专栏:运维一切运维一切

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

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016/05/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档