PHP-php如何控制上传图片的真实性?

PHP-php如何控制上传图片的真实性?

浮生未歇 发布于 2017-01-30 字数 309 浏览 1123 回复 1

可能重复的问题
【讨论】如何用PHP提取文件的扩展名并判断文件类型是否正确?

php如何控制用户上传的图片是真实的。不仅仅是后缀名的验证?例如:有的是含有代码的文件只改了后缀是图片的。对于这种情况改如何处理

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晚风撩人 2017-09-16 1 楼

你这个属于解决文件上传漏洞,主要分为两大类:
一类是没有对上传格式做很好的限制,比如linux环境下上传个php的木马,过滤方法不能使用排除法,因为有些扩展名是不能预料到的。如.php3,.php4也可以当做php网页来执行。要限制住只能使用某某扩展名,比如".JPG"、".BMP"、".GIF"。而且要再服务端做校验,不要紧紧用客户端脚本,因为可以修改发送的封包的,把封包中的muma.php.JPG修改为muma.php。
一类是网页嵌入图片时,没有使用<IMG>标签链接图像地址,而是把图片内容包含在网页中,这样就可以构造恶意的图片内容来搞破坏了,比如:

GIF89a
<head> <meta http-equiv = "refresh" content = "1; url=http://www.hacker.com/" />. 
</head>

访问这个网页会加载图片,就跳到挂有木马的http://www.hacker.com/ 网站了。
也可以使用一律把文件生成缩略图快照的方法,两类上传漏洞都防住了。
另外,想验证图片的真实性,你可以看下 @【讨论】如何用PHP提取文件的扩展名并判断文件类型是否正确? 这个贴。