各类验证码的长度和类型应该如何设置?

比如登录验证短信,支付验证短信等等。目前市场上大多是6位数字,偶尔有4位;也有部分是英文字母或者组合。
你觉得如何设置是最优的?针对不同场景。
已邀请:

Gaana - 嘴巴选手

推荐来自: asayahaku 浮生未半 Joey 李大伟

验证码本质上是一个图灵测试,确保操作是由人而不是机器发起的。

6位纯数字和4位不区分大小写的字母+数字在复杂度上是相同的,百万次的枚举量,搭配适当的时间戳和一次性规则完全可以防止最低级的暴力破解和重放攻击。
对于验证码识别技术,一般的应对方式有使用提问式的验证码,比如计算简单的数学题,把计算结果作为验证码,或是在图片验证码上添加干扰信息,最基础的是在图片上添加背景、噪点和干扰线,稍高级一点的还有让字符旋转、重叠、扭曲以及降低字符颜色与背景色的对比度等等。
(多说一句,识别图片验证码一般要经过一个解码图片并对其二值化的过程,类似于把图片做成黑白并提升对比度)
至于更进一步的信源窃听和中间人攻击,这都不是验证码需要考虑的问题了。

一般而言,4位数字验证码的用户体验最好,针对访问量不太大的网站是最合适的。
需要优先考虑安全性的网站也有不少使用汉字验证码和验证问题,但在验证码中添加符号和区分大小写都是比较反人类的,毕竟这个工具只是为了防止暴力破解和过滤重复请求,必须要兼顾安全性和用户体验。

就载体来说,动态安全令比较安全但也相对麻烦,短信、邮箱、网页验证码安全性大差不差,用户体验也因人而异,一般来说还是以网页和短信为首选,apple中国地区充值服务还搞过电话验证。

12306就不提了。

要回答问题请先登录注册