关于验证码的一些想法

9 评论 8376 浏览 37 收藏 6 分钟

验证码是一种区分用户是计算机还是人的公共全自动程序,由卡内基梅隆大学的四位教授提出的。正确键入验证码,才可以继续用户行为,所以验证码能够有效的防止恶意破解密码、刷票、论坛灌水、刷页等。验证码一般在注册、登录、留言回复、绑定、支付等场景下出现。

其表现形态多种多样大致如图:

机器产生的验证码,应该有以下特点:

  1. 机器在短时间内可以生成大量不相同的问题
  2. 人可以在短时间内回答出来
  3. 机器无法在短时间内回答出

验证码的存在有其必要性,但用户为之付出了很高的使用成本,据统计用户停留在验证码的时间超过5.5秒,大大影响了用户的对产品的体验感受。那么我们如何权 衡利弊,在安全和易用性上做取舍呢?生活中接触到的最普遍的验证码,是以字母、阿拉伯数字出现的,我将对这一种进行分析。

一、验证码的出现

原则是:非必要的时候尽量不用验证码。例如:同一用户名或同一IP地址3次输入错误的时候,才启用验证码。

二、验证码的识别

在“字母/数字”验证码中,主要是防止通过OCR软件识别那些容易辨认的验证码,同时要提高人眼的辨识度,可以通过颜色,字体,减少干扰等方式。例如:1、L、I、0、O、Q、g、9、2、Z、类似的字母都不应当出现在验证码,以降低用户识别难度。

三、统一输入类型

最好统一为单一类型识别,如:全部字母,全部数字。建议不要混合输入,混合输入的缺点是需要切换输入区域;还有因没切换中英文输入而打出中文的可能。

四、输入大小写问题

验证码最好采取输入时不区分字母大小写,统一识别,并在旁边提示用户可不区分大小写。在验证码图片显示时,最好统一为小写或大写字母,便于识别,输入框锁定英文输入,以免打出汉字。

五、验证码的长度

在允许的条件下,验证码不要过长,通常我们见到的都是4位的验证码。当然也有以英文单词作为验证码,也不失为一个好的办法。

六、验证码刷新问题

当用户更改验证码时,验证码应当保证能够快速刷新,减少用户驻留时间。一般会默认点击验证码自动刷新,最好能够提示用户“如何刷新”,快速引导用户。

七、验证码输入错误时

最好能在用户输入时,及时判定验证码是否输入正确,而不要等到用户点击提交后,再告诉用户“您的验证码输入错误!”。如果用户输入错误时,尽量将用户损失降到最低。尽量降低验证码刷新机制,更多的保存用户已经填过的信息,不要让用户反复填写表单。

将需要填写验证码的信息与非必要验证信息相分隔也是一个好办法

八、其他问题

  • 网页缓存:验证码输入框不需要记录历史内容;
  • 全角/半角问题:输入法的全角/半角输入的数字是不一样的,即全角数字1234和半角数字1234是不同的。一般输入默认为半角,当用户输入全角时提示用户切换。

最后:验证码每天都在重新设计,如果真的有一种完美的验证码,早就流行开了,而你没看到是因为那些方案都比现在的更不靠谱而已。

 

本文由 @unopm 原创授权发表,并经人人都是产品经理编辑。转载此文章须经作者同意,并请附上出处(人人都是产品经理)及本页链接。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 滑动验证是个不错的选择。
    如果觉得滑动验证的安全性不强的话,那能否将验证环境换成一个简单的小游戏呢,比如简单的连连看小游戏之类的。

    来自江苏 回复
  2. 有时候验证码确实搞得人很烦

    来自北京 回复
  3. 刘老师…

    来自广东 回复
  4. 不知道老师是否看过:极验验证:http://www.geetest.com/ 平均使用时长比其他验证码短少2-3秒以上。也符合验证码的三个特点,我也是偶然看到的。

    来自上海 回复
    1. 体验过类似滑动验证的验证方式,不是太了解滑动验证的原理,易用性的确很高但安全性不是太清楚;也见过google在web页面上有自动检测光标轨迹就能验证的方式,着实高端,总之在人机博弈过程中一定会有更好的体验方式出现的 🙂 !

      来自北京 回复
  5. 😥

    来自江苏 回复
  6. 刘老师??

    来自北京 回复
    1. 林老师

      来自北京 回复
  7. 验证码很影响用户体验

    来自广东 回复