PHP 怎么实现对非法图片的过滤?

2015-05-12 12:25:31 +08:00
 php230
有哪位亲,做过类似的需求吗?
需要过滤帖子中用户上传的非法图片
这个用PHP怎么实现呢?或者用PYTHON怎么实现呢?
求教?
6641 次点击
所在节点    PHP
37 条回复
lincanbin
2015-05-12 12:31:56 +08:00
getimagesize($_FILES['upload_field']['tmp_name']);
如果能获取到图片的尺寸,则是合法图片。
thankyourtender
2015-05-12 12:33:22 +08:00
鉴别黄色图片?  找 暴漫的 暖男
lincanbin
2015-05-12 12:33:38 +08:00
一般的话,图片还要有一个压缩过程,这个过程你可以把原图片的的所有像素点全提出来,移动到另一个resource,最后再set quality。
这个压缩过程也可以实现图片的合法化。
justfindu
2015-05-12 12:34:54 +08:00
非法是指黄色么 这个图片处理还是不要用php吧 占资源很多啊
lincanbin
2015-05-12 12:35:10 +08:00
我要再确认一次,你说的非法图片是指invalid image?
是指压缩包伪装成的,或者是夹杂恶意脚本的攻击性图片?
evlos
2015-05-12 12:38:16 +08:00
读文件头检查文件类型
orzfly
2015-05-12 12:38:21 +08:00
@lincanbin http://www.secgeek.net/bookfresh-vulnerability/

不要以为如果能获取到图片的尺寸就一定是合法图片了……
b821025551b
2015-05-12 12:40:07 +08:00
“非法”的界定是什么
imWBB
2015-05-12 12:55:28 +08:00
@b821025551b

楼主说了算....

说你非法就算合法的也是非法
说你合法就算非法的也是合法
哈哈哈.....
php230
2015-05-12 13:17:42 +08:00
@lincanbin 裸体图片、有推广文字的图片等
php230
2015-05-12 13:18:16 +08:00
@b821025551b 主要是哪些裸体图片、有推广文字信息的图片等
imn1
2015-05-12 13:24:35 +08:00
jpg的话,查头去尾
查头就是
FF D8 FF E0 xx xx 4A 46 49 46 00
jpg开头就是这些字节,file signature

去尾就是
FF D9
jpg结尾必然是这两个字节,并且理论上整个文件只出现一次
在这两个字节后面添加内容不影响jpg的显示,但就有可能携带危险信息
所以用二进制读到这两个字节,后面的全部舍弃

其它格式不详
权限的问题就不用说了吧

内容的非法就肉眼判断吧,请个鉴黄师~
cst4you
2015-05-12 13:30:23 +08:00
@imn1 @唐马儒
haython
2015-05-12 13:32:59 +08:00
简单的误报太高,复杂的一般人搞不定
php230
2015-05-12 13:33:03 +08:00
@imn1 嗯,主要还是图片内容的过滤吧
viator42
2015-05-12 13:39:31 +08:00
很久以前有个软件靠检测肉色面积,然后就被玩坏了
maxsec
2015-05-12 14:01:12 +08:00
百度+Google识图接口,匹配关键字
w88975
2015-05-12 14:02:09 +08:00
楼主怎么那么麻烦,现在谁还有直接把用户上传的图片作为最终图片的?
你既然怕图片里携带危险代码,就直接把图片在服务器上压缩一下,就行了,用第三方,7牛也行。
won
2015-05-12 14:38:43 +08:00
首先,你要有个非法图片库做母本,有了求分享
mgc
2015-05-12 14:42:24 +08:00
雇人,这个职位叫“鉴黄师”,通俗说法叫“内容审查工程师”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/190399

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX