PHP China | 中国开源之路 's Archiver

wwwfk 发表于 2007-4-6 18:52

请教一下,如何用PHP识别图片(如GIF)是真正的图片

请教一下大家,如何用PHP识别图片是真正的图片而不是一些伪装的图片
因为我知道有些木马可以假装成GIF 或是JPG 的形式上传到硬盘上,那样的话就会带来一定的危险了

beiersi 发表于 2007-4-8 13:30

getimagesize(),这个够用了吧,还有一个mime_content_type()

wwwfk 发表于 2007-4-8 17:35

谢谢啊,,,,,

剑心 发表于 2007-4-14 13:28

getimagesize(),这个够用了吧
这个的确能证明格式是图片的
但是需要注意的是程序区别是什么文件是用后缀来判断的,所以不要关注内容,而是专著后缀比较好

譬如

type c:\boot.ini >> 1.gif

这个1.gif依然内容是图片但是如果被传到服务器上做为php处理依然会出问题的

softly 发表于 2007-4-17 11:51

好比 gif89a 漏洞

wwwfk 发表于 2007-4-20 11:39

谢谢楼上的各位

edwardhey 发表于 2007-4-20 19:22

:L 都是牛人 , 学习了

wwd 发表于 2007-5-25 13:37

[quote]原帖由 [i]剑心[/i] 于 2007-4-14 13:28 发表 [url=http://www.phpchina.com/bbs/redirect.php?goto=findpost&pid=173741&ptid=22670][img]http://www.phpchina.com/bbs/images/common/back.gif[/img][/url]
getimagesize(),这个够用了吧
这个的确能证明格式是图片的
但是需要注意的是程序区别是什么文件是用后缀来判断的,所以不要关注内容,而是专著后缀比较好

譬如

type c:\boot.ini >> 1.gif

这个1.gif依 ... [/quote]
不是太了解剑心的意思。
用后缀名判断文件类型安全吗?用户可以随意改后缀名的。比如它把.exe的改成.gif的,就可以直接传到服务器上了。
相反我觉得关注文件真实内容比较重要,请指教。

kinns 发表于 2007-5-25 22:20

读取前几个字符. 看看是不是GIF的特定的头. 这样可以么?

wwwfk 发表于 2007-8-12 15:23

[quote]原帖由 [i]wwd[/i] 于 2007-5-25 13:37 发表 [url=http://www.phpchina.com/bbs/redirect.php?goto=findpost&pid=197385&ptid=22670][img]http://www.phpchina.com/bbs/images/common/back.gif[/img][/url]

不是太了解剑心的意思。
用后缀名判断文件类型安全吗?用户可以随意改后缀名的。比如它把.exe的改成.gif的,就可以直接传到服务器上了。
相反我觉得关注文件真实内容比较重要,请指教。 [/quote]
二楼的已经给出了方法了啊,查一下PHP 手册就可知了
到于剑心所说的内容则是要看你具体的项目来确定
个人觉得内容加后缀名两个一起作用比较好一些
第一步先检验是何种文件(是否可以上传)
第二步则是如果应文件是图片则判断文件类型安全的安全性
第三步,在第一步与第三步都符合我们的RULE 之后就可以上传了

[[i] 本帖最后由 wwwfk 于 2007-8-12 15:27 编辑 [/i]]

marvin 发表于 2008-3-15 06:55

gif89a貌似也可以绕过getimagesize()的吧..

angeljyt 发表于 2008-3-15 10:50

通过表单上传的文件,可以通过MIME类型来检测。我试过的,改了后缀没用滴,照样能得到图片类型,你自个儿可以上传试试。

marvin 发表于 2008-3-16 02:33

ls 的你试过加gif89a后验证么..

weiqk 发表于 2008-3-23 14:11

[url]http://cn.php.net/manual/zh/function.getimagesize.php[/url]
加上楼上几位大哥的帖子,楼主可以结贴了

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.