手机验证码

手机验证码

验证码基本逻辑:客户端发起请求,服务端创建一个新的SessionID同时生成一个随机验证码,一起返回给客户端。客户端提交验证码+SessionID给服务端,服务端验证并销毁当前会话,返回给客户端结果。

验证码相关功能可能出现的问题

短信验证码在客户端校验,直接模拟发送后面的请求就能绕过,例如js中校验验证码。
验证码输出到客户端,例如URL、HTML、cookie中带有验证码,有些有验证作用的ID输出到客户端也会导致安全问题。

没有进行非空判断,各种异常输入导致跳过验证。
url中的某些值影响验证码逻辑,修改/删除url、cookie中的某些字段、值,就不验证验证码,或者验证码被重置为指定值。

万能验证码发布上线前没有删除。
生成的验证码有规律,或随机数池容量太少容易被爆破,例如可以根据前后验证码推算,程序bug导致验证码在很小的范围内,类似选择题ABCD几选一更不可选。

限制提交验证码的次数,设置验证码过期时间,验证码使用一次后立即失效,增加图形验证码增加爆破难度,验证码图片要扭曲、噪点、多色、黏连等。限制了验证码次数,但是修改url中的字段可以绕过限制。
验证码和用户一一对应。

6san.com

评论已关闭。