V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
gowithwind
V2EX  ›  分享创造

热腾腾的圆形验证码刚出锅,欢迎拍砖 http://gowithwind.github.io/blog/index.html?yuan

  •  
  •   gowithwind · 2014-10-13 16:06:59 +08:00 · 6488 次点击
    这是一个创建于 3687 天前的主题,其中的信息可能已经有所发展或是发生改变。

    img

    第 1 条附言  ·  2014-10-13 20:54:35 +08:00
    目前只用chrome开发测试。由于只是在做概念验证,其他浏览器请见谅。

    一个解锁交互方案:
    https://cloud.githubusercontent.com/assets/2367339/4613545/d4a48614-52d6-11e4-9f87-908beef021ec.png
    32 条回复    2014-10-21 00:04:37 +08:00
    rock_cloud
        1
    rock_cloud  
       2014-10-13 16:15:20 +08:00
    出于对用户的误差的容忍,应该是有一个允许的范围范围吧?如果纯随机去猜这个验证码,范围大小/2pi就是才对的概率,而且我觉得这个概率应该不小。
    kaizixyz
        2
    kaizixyz  
       2014-10-13 16:19:46 +08:00
    @procen424 快来~
    zhujinliang
        3
    zhujinliang  
       2014-10-13 16:22:09 +08:00
    感觉如果用程序识别的话,尝试每个角度,正确的位置应该是沿Y轴扫描对比度差别不大,但沿X轴扫有明显对比度变化的角度

    我不是搞图形识别的,随便猜的
    akfish
        4
    akfish  
       2014-10-13 16:24:36 +08:00
    其实那篇论文主要的核心是图片库的自动获取,预先就要排除机器容易识别朝上方向的图片,安全性大多来源于这一步。
    原论文里最后还提到,可以使用N张图片,显示提示要求用户旋转M(M<N)张图片,再加上每次旋转角度随机化,基本上无法猜解爆破。
    gowithwind
        5
    gowithwind  
    OP
       2014-10-13 16:27:44 +08:00
    @akfish 旋转几张图片会太累吧,当然加强防御的时候可以增加。平时也可以放简单的图片,只要没有识别规律即可。
    gowithwind
        6
    gowithwind  
    OP
       2014-10-13 16:29:08 +08:00
    @zhujinliang 这个很难吧,不是一般性规律。
    ayang23
        7
    ayang23  
       2014-10-13 16:29:59 +08:00
    简单的人脸检测即可爆菊
    gowithwind
        8
    gowithwind  
    OP
       2014-10-13 16:30:39 +08:00
    @rock_cloud 这个要看具体情况,平时可以放放水。单纯靠验证码是不能解决所有问题的。
    akfish
        9
    akfish  
       2014-10-13 16:32:21 +08:00
    @gowithwind 旋转的用户友好程度完全取决于交互设计。
    这个验证码其实特别适合移动平台,触控操作极其方便,转10张都比弹个虚拟键盘输入英文数字混合的验证码方便。
    rock_cloud
        10
    rock_cloud  
       2014-10-13 16:48:33 +08:00
    @gowithwind 还有一个问题,就是传送大量图片的代价其实也挺大的,不知道能不能用这点提高服务器负载?
    gowithwind
        11
    gowithwind  
    OP
       2014-10-13 16:52:37 +08:00
    @rock_cloud 如果不识别图像,只是碰运气,其实不会下载图片的。对于暴力攻击,可以封ip,或者祭出反人类的验证码。
    yxzblue
        12
    yxzblue  
       2014-10-13 16:55:16 +08:00
    差!拉快了会失去响应,连这都没测,就放出来,太心急
    gowithwind
        13
    gowithwind  
    OP
       2014-10-13 16:58:09 +08:00
    @yxzblue 其实是因为对javascript事件不太会哈,也不想用现成的jquery库,会加强学习
    qiongqi
        14
    qiongqi  
       2014-10-13 16:58:32 +08:00
    我见过很多spam都是有n多ip暴力攻击的
    alioth310
        15
    alioth310  
       2014-10-13 17:03:28 +08:00
    firefox下js没有起作用,始终显示“degree:0,result:”
    gowithwind
        16
    gowithwind  
    OP
       2014-10-13 17:05:49 +08:00
    @qiongqi 这个主要是提高人类用户的体验,针对spam可以提高防御级别,错误次数限定。
    loniper
        17
    loniper  
       2014-10-13 17:07:38 +08:00
    没看明白,是拖动滑块来使下面的图像朝上显示么?那做个自动拖动滑块的插件再检测result结果不就可以了?
    gowithwind
        18
    gowithwind  
    OP
       2014-10-13 17:08:33 +08:00
    @alioth310 没装firefox,我去装个,修改bug。目前应该不支持移动浏览器,因为没支持touch事件。
    gowithwind
        19
    gowithwind  
    OP
       2014-10-13 17:27:22 +08:00
    @alioth310 修好了,原来是textcontent才有效。谢谢。
    bydmm
        20
    bydmm  
       2014-10-13 17:52:04 +08:00
    我以前破过一个,直接暴力试一遍。
    zixincao
        21
    zixincao  
       2014-10-13 18:19:41 +08:00
    @ayang23 头像只是用来辅助的,这个人脸识别怎么破?
    gjflsl
        22
    gjflsl  
       2014-10-13 18:47:43 +08:00
    不是所有浏览器都支持,safari不支持
    icylogic
        23
    icylogic  
       2014-10-13 20:18:59 +08:00
    脑洞一下: 题目可以有一种类型是将一个汉字中独立的一部分做成旋转验证, 比如一个国字, 初始把中间的玉随便转个角度......

    继续脑洞: 一个随意形状的纯色图片中, 随机渲染一部分为特殊颜色, 然后一个小点随机在这个图片各个位置出现并停留一小段时间, 要求在这个小点在特殊区域内停留时, 只需点击整张图片, 进行验证.

    假如线度比为1:20, 那面积比就是1:400, 随机暴力 100 次中 1 次都没答对的概率是 78%, 而且可以控制每几次跳转小点才能跳到特殊区域中, 进一步降低暴力概率 (而且暴力这么多次早该封了吧...)
    Cee
        24
    Cee  
       2014-10-13 20:39:51 +08:00
    safari不支持+1
    gowithwind
        25
    gowithwind  
    OP
       2014-10-13 20:47:50 +08:00
    @icylogic
    赞脑洞!
    关于汉字,是有很多种变化(字体,拆分,何必等)可做,不过不适合国外的情况。

    第2个貌似机器是可以做到检测的,因为规则是一定的,有特异性存在。
    icylogic
        26
    icylogic  
       2014-10-13 21:00:48 +08:00 via Android
    @gowithwind 嗯。。。英文的话不管怎么转识别都很容易。。。

    规则的话,我不太了解这块,但逆向随机算法很容易嘛?。。
    gowithwind
        27
    gowithwind  
    OP
       2014-10-13 21:11:09 +08:00
    @icylogic
    对你的方法还不太理解,如果这个随机是在浏览器本地执行,那么机器可以完全控制住。如果实在服务器端,机器也肯定有足够的时间找到特异区域,人的速度不可能赶上。

    因此要困住机器,其实是要提高识别图片的难度。字符识别,是最简单的识别了。更多的可以有人脸识别,物体识别,物体朝向识别,表情识别等。这其中图像方向应该是最容易交互的。
    weyou
        28
    weyou  
       2014-10-15 16:22:27 +08:00
    分分钟破解, 程序控制滑块从头拉到尾, 检查result是否“success”
    gowithwind
        29
    gowithwind  
    OP
       2014-10-15 17:46:22 +08:00
    @weyou 实际运行的时候,应该是在停顿的时候,向后台验证,只有2-3次机会最多。这里只是模拟。
    doun
        30
    doun  
       2014-10-16 06:56:09 +08:00 via Android
    图片库是个问题,如果库太小,客户端解决方向问题后容易被破解
    weyou
        31
    weyou  
       2014-10-16 16:57:08 +08:00
    @gowithwind 恩,停顿的时候验证, 不通过就换张图片, 这样倒是真的可以。
    xpol
        32
    xpol  
       2014-10-21 00:04:37 +08:00
    太有意思了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   714 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:59 · PVG 05:59 · LAX 13:59 · JFK 16:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.