我刚刚阅读这篇文章关于防止快速登录尝试的基于表单的网站身份验证的权威指南.
最佳实践#1:短暂的时间延迟随着尝试失败的次数而增加,例如:
1次尝试失败=无延迟
2次尝试失败= 2秒延迟
3次尝试失败= 4秒延迟
4次尝试失败= 8秒延迟
5次尝试失败= 16秒延迟
等
DoS攻击这个方案将是非常不切实际的,但另一方面,可能具有破坏性,因为延迟会呈指数级增长.
我很好奇我如何在PHP中为我的登录系统实现这样的东西?
我想限制失败的登录尝试.例如,如果特定用户尝试使用错误的用户名或密码登录4次,我应该在第4次显示CAPTCHA而不是在某个特定时间阻止,并且除非他提供有效的用户名和密码,否则将继续显示CAPTCHA.用户成功登录后,登录尝试将重置为ZERO.
从安全的角度来看,是否检查用户名而不是IP地址?这种方法可以在不使用数据库的情况下实现吗?因为我认为我不需要存储时间,因为我只会显示recaptcha?请提出你的意见.