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

怎么写出一个"好"的验证码

  •  
  •   WWd0g · 2016-11-06 19:41:11 +08:00 · 3629 次点击
    这是一个创建于 2938 天前的主题,其中的信息可能已经有所发展或是发生改变。

    图片验证码,短信验证码,邮件验证码 这些验证码的目的可能是为了防止机器人,黑客攻击,权限管理等等

    但是如何才能写出一个好的验证码呢(主要从安全的角度看)?

    我觉得满足以下几点,可能就是个好的验证码了:

    • 时效性
    • 复杂度
    • 用户体验

    时效性

    • 时间限制(验证码发出几分钟内验证有效)
    • 次数限制(多少次验证内,验证码有效)

    复杂度

    • 字母组合
    • 数字组合
    • 字母+数字组合 长度 4-6 位

    用户体验

    能一次完成的操作,让用户两次进行就不是一个好的体验


    拿手机验证码举例子,我选择以下几种组合来做短线验证码

    • 时效性:时间限制(5 分钟内有效)
    • 复杂度:数字组合(长度 4 位)

    上面这种情况可能会出现一个问题,5 分钟内,只需要进行 9999 次猜解

    即可绕过这种情况,实际例子很多,但是直接把 APP 名字发出来还是不太好


    顺便求职

    • 求职工种:php 程序员

    • 工作经验:一年

    • 工作地点:成都

    • 熟悉语言:php,python

    • 其他技能:爬虫,安全

    • 个人博客:www.wd0g.com

    • 联系电话:18723996897

    • 联系邮箱:[email protected]

    其他

    其实我博客写的比较详细,只是文笔太差...不好意思发,所以重新总结了下

    本文只是我多次尝试绕过各种 APP 验证码的经验总结,无任何装逼成分,别说我装逼了,我怕...

    11 条回复    2016-11-07 08:03:28 +08:00
    shiny
        1
    shiny  
       2016-11-06 19:52:45 +08:00
    复杂度部分,还没提到什么样的图形验证码容易被识别,以及一些常见的识别算法。
    WWd0g
        2
    WWd0g  
    OP
       2016-11-06 20:00:40 +08:00
    @shiny 这个因为不是太熟悉,就没写了,我博文中有提起
    nolo
        3
    nolo  
       2016-11-06 20:02:23 +08:00
    验证码的目的是区分是不是机器。不应该在“验证码“上做文章,应该在区分人和机器人。如果算法算出很明显是“人”,不应该为难用户。我觉得很多网站在这点上本末倒置。
    lhx2008
        4
    lhx2008  
       2016-11-06 20:05:22 +08:00 via Android
    没有干货,验证码本来就应该是区别人和电脑,而不是长度什么的
    powergx
        5
    powergx  
       2016-11-06 20:24:13 +08:00 via iPhone
    人肉打码 轻松破之
    Ouyangan
        6
    Ouyangan  
       2016-11-06 20:25:15 +08:00
    我觉得*验很不错
    WWd0g
        7
    WWd0g  
    OP
       2016-11-06 20:39:26 +08:00
    @lhx2008
    @nolo
    我主要从安全的角度讲啦,当然我也认同你们的看法,但是我觉得实现起来还是难道高
    bdbai
        8
    bdbai  
       2016-11-06 20:48:38 +08:00 via Android
    顺便问下绕过验证码有哪些思路?
    ic2y
        9
    ic2y  
       2016-11-06 20:51:36 +08:00
    生产噪声需要知道 怎么 针对性对抗 机器学习的识别
    v1024
        10
    v1024  
       2016-11-07 07:51:48 +08:00 via iPhone
    错误后直接实效不就行了?何来 999 次一说?
    j8sec
        11
    j8sec  
       2016-11-07 08:03:28 +08:00 via iPhone
    NoCaptcha
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1240 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 18:00 · PVG 02:00 · LAX 10:00 · JFK 13:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.