请教一下,如何用PHP识别图片(如GIF)是真正的图片
请教一下大家,如何用PHP识别图片是真正的图片而不是一些伪装的图片因为我知道有些木马可以假装成GIF 或是JPG 的形式上传到硬盘上,那样的话就会带来一定的危险了 getimagesize(),这个够用了吧,还有一个mime_content_type() 谢谢啊,,,,, getimagesize(),这个够用了吧
这个的确能证明格式是图片的
但是需要注意的是程序区别是什么文件是用后缀来判断的,所以不要关注内容,而是专著后缀比较好
譬如
type c:\boot.ini >> 1.gif
这个1.gif依然内容是图片但是如果被传到服务器上做为php处理依然会出问题的 好比 gif89a 漏洞 谢谢楼上的各位 :L 都是牛人 , 学习了 [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的,就可以直接传到服务器上了。
相反我觉得关注文件真实内容比较重要,请指教。 读取前几个字符. 看看是不是GIF的特定的头. 这样可以么? [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]] gif89a貌似也可以绕过getimagesize()的吧.. 通过表单上传的文件,可以通过MIME类型来检测。我试过的,改了后缀没用滴,照样能得到图片类型,你自个儿可以上传试试。 ls 的你试过加gif89a后验证么.. [url]http://cn.php.net/manual/zh/function.getimagesize.php[/url]
加上楼上几位大哥的帖子,楼主可以结贴了
页:
[1]
