V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
php230
V2EX  ›  PHP

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

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

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

    楼主说了算....

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

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

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

    内容的非法就肉眼判断吧,请个鉴黄师~
    cst4you
        13
    cst4you  
       2015-05-12 13:30:23 +08:00
    @imn1 @唐马儒
    haython
        14
    haython  
       2015-05-12 13:32:59 +08:00
    简单的误报太高,复杂的一般人搞不定
    php230
        15
    php230  
    OP
       2015-05-12 13:33:03 +08:00
    @imn1 嗯,主要还是图片内容的过滤吧
    viator42
        16
    viator42  
       2015-05-12 13:39:31 +08:00
    很久以前有个软件靠检测肉色面积,然后就被玩坏了
    maxsec
        17
    maxsec  
       2015-05-12 14:01:12 +08:00
    百度+Google识图接口,匹配关键字
    w88975
        18
    w88975  
       2015-05-12 14:02:09 +08:00
    楼主怎么那么麻烦,现在谁还有直接把用户上传的图片作为最终图片的?
    你既然怕图片里携带危险代码,就直接把图片在服务器上压缩一下,就行了,用第三方,7牛也行。
    won
        19
    won  
       2015-05-12 14:38:43 +08:00 via iPhone
    首先,你要有个非法图片库做母本,有了求分享
    mgc
        20
    mgc  
       2015-05-12 14:42:24 +08:00
    雇人,这个职位叫“鉴黄师”,通俗说法叫“内容审查工程师”
    lianyue
        21
    lianyue  
       2015-05-12 16:28:01 +08:00
    记得 有个开源 php 鉴定 http://www.jingwentian.com/t-262 这文章 以前在哪看的忘记了 鉴定 自己试试吧
    php230
        22
    php230  
    OP
       2015-05-12 19:00:40 +08:00
    @lianyue 嗯,谢谢,我看看去
    php230
        23
    php230  
    OP
       2015-05-12 19:01:47 +08:00
    @w88975 亲,你可能没明白我的意思,我是要过滤正常图片中,那些包含有违规内容的图片,如:图片中有推广文字等信息
    SuujonH
        24
    SuujonH  
       2015-05-12 19:11:07 +08:00
    @php230 所以这和识别验证码并没有什么区别
    有误判用户绝对拍桌子砸凳子,即使如此你还需要这样做嘛?
    RIcter
        25
    RIcter  
       2015-05-12 19:15:08 +08:00 via iPhone
    @lincanbin 可以繞過(。
    RIcter
        26
    RIcter  
       2015-05-12 19:16:30 +08:00 via iPhone
    tabris17
        27
    tabris17  
       2015-05-12 19:23:30 +08:00
    @viator42 这是个宗族歧视的软件,黑人表示抗议,哈哈哈
    virusdefender
        28
    virusdefender  
       2015-05-12 19:51:52 +08:00
    小黄图的话 需要机器学习~
    KexyBiscuit
        29
    KexyBiscuit  
       2015-05-12 21:23:26 +08:00 via Android
    @php230 同意@virusdefender 的观点,用机器学习吧,传统检测是坑,@绿坝娘。社区的话由用户举报更好,@腾讯。
    kaneg
        30
    kaneg  
       2015-05-12 23:23:44 +08:00
    这篇文章的主人公跟你碰到一样的难题: http://python.jobbole.com/81277/
    tangzx
        31
    tangzx  
       2015-05-12 23:44:24 +08:00 via iPhone
    绿坝娘,棒棒棒
    rwalle
        32
    rwalle  
       2015-05-13 09:42:40 +08:00 via Android
    @viator42 加菲猫?
    likuku
        33
    likuku  
       2015-05-13 10:34:42 +08:00
    @php230 人肉突厥/人肉审查,先缓存,未审核不能正式发布,人工审核完毕,驳回/发布。
    likuku
        34
    likuku  
       2015-05-13 10:37:32 +08:00
    请些大学生课余兼职挺好的,便宜好用。真的,前几年在某注册用户2千万的SNS网站工作,多的时候有十几个学生兼职专门作这个人肉审核。
    hiboshi
        35
    hiboshi  
       2015-05-13 13:05:21 +08:00
    使用getimagesize 能获取到图片的尺寸 就可以
    windydays
        36
    windydays  
       2015-05-13 22:36:33 +08:00
    之前看到有这种web service: http://www.tuputech.com/
    php230
        37
    php230  
    OP
       2015-05-14 10:03:27 +08:00
    @windydays 这个看起来挺不错的,不过试用了一下广告图片测试的,上传了一张有大量文字的图片,没有识别出来呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5534 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:56 · PVG 16:56 · LAX 00:56 · JFK 03:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.