验证码绕过

原理:html

客户端发起请求->服务端响应并建立一个新的SessionID同时生成随机验证码,将验证码和SessionID一并返回给客户端->客户端提交验证码连同SessionID给服务端->服务端验证验证码同时销毁当前会话,返回给客户端结果。安全

安全问题客户端
1. 有的网站验证码由本地js生成仅仅在本地用js验证。能够在本地禁用js,用burp把验证字段删除。
2. 有的网站把验证码输出到客户端html中,送到客户端Cookie或response headers。
3. 有些网站默认不显示验证码,而是在输入错误必定数量以后才须要验证验证码,开发人员可能在Cookie中写入一个标记loginErr,用来记录错误数量,则能够不更新Cookie中的loginErr值反复提交,验证码就不会出现。
安全问题服务端
1. 验证码不过时,没有及时销毁会话致使同一验证码反复可用。攻击者能够在Cookie中带固定的sessionID和固定的验证码字符串。
2. 没有对验证码进行非空判断,致使能够直接删除验证码参数。session

3 产生的验证码问题有限网站

修护建议:
1. 必须输入验证码
2. 验证码只能用一次
3. 验证码不要太弱
4. 大网站最好统一安全验证码,各处使用同一个验证码接口spa