我们浏览网站经常会用到一些验证码,主要目的是防止来自暴力破解或密码穷举等方面的攻击,
但有时候验证码的出现也会影响用户的浏览体验,解决方案之一就是设置一个抛错阀值,当有恶意用户
在尝试暴力破解或穷举的时候输错次数超过阀值,便触发验证码框的弹出,这样既可以阻止攻击者的
恶意行为又可以提高合法用户的浏览体验。
那么trouble来了,我通过什么信息去标识一个用户呢?解决方案有很多种。
- 对于已注册过的用户
已经注册过的用户肯定有自己的用户ID,而且这个ID是不会变的,那么就可以利用这个ID做全局变量,
然后设置count计数,当超过输错上限的阀值(比如3次或6次)的时候,验证码弹出。
- 对于未注册过的用户
方法1. 未注册过的用户通常没有用户ID,这个时候可以获取用户IP地址并绑定该用户,然后设置阀值并计数,
超过上限便弹验证码框。
方法2. 定义一个全局变量,运行几次加几次,当超过阀值的时候触发验证码弹框即可。
(以上解决方案仅供参考,如有不妥请尽管拍砖指正。)