登录系统中防止暴力破解账号 ,很有效的一个办法就是使用验证码(这里所说的都是图片的验证码),我一直以来也都是使用这种办法,现在来探讨一下关于验证码的实现方式以及一些弊端和解决办法。
一个基本的验证码方案实现流程为:
1、实现一个图片生成模块,然后用此模块实现一个输出图片的页面。这个页面每次每访问时都需要生成一个新的验证码,把验证码的值存入一个能跨请求(Request)的存储系统中(比如Session),然后输出这个验证码图片。
2、在需要加验证码的页面引用1中的验证码图片地址()。在每次用户数据提交后如果页面不刷新,也需要重新加载验证码图片(即刷新验证码)。
3、用户提交数据后,后台系统中拿到用户提交的验证码和存储系统中的验证码值作比较,如果不匹配则报错(这时候需页面需要生成新的验证码)。
这样一个流程基本能实现一个简单的验证码方案,不过这种方案对用户体验却有个弊端:用户每次都得输入验证码,验证码越难认,输入越麻烦(我有过10几分钟没有完成yahoo注册的经验,其中一个问题就在于那个验证码太复杂,输错验证码后填写的注册信息全丢失)。如果你尝试登录Google,在N(10)次登录不成功之后,登录页就会出现一个验证码,之后的登录尝试都必须填入验证码。
我现在分析怎样改进前面的方案,实现和Google登录系统一样的验证码效果(如果你的验证码是每次都需要的,则用不着下面的方法)。
如果需要等到登录失败多次后再出验证码,那么需要在Session中
登录系统中验证码的使用(防注册机SPAM)
最新推荐文章于 2022-02-22 12:16:55 发布