首先,一点背景:我正在为CodeIgniter实现一个auth + auth系统并不是什么秘密,到目前为止我赢了(可以这么说).但是我遇到了一个非常重要的挑战(大多数auth库完全错过了,但我坚持正确处理它):如何智能地处理大规模,分布式,可变用户名的暴力攻击.
我知道所有常用的技巧:
现在,这些只是理论上可行的想法.有很多垃圾想法可以打开网站(比如琐碎的DoS攻击).我想要的是更好的东西.更好的是,我的意思是:
它必须安全(+)抵御DoS和暴力攻击,并且不会引入任何新的漏洞,这些漏洞可能会让稍微狡猾的机器人继续在雷达下运行
它必须是自动化的.如果需要人工操作员验证每次登录或监控可疑活动,那么它无法在真实场景中运行
它必须适用于主流网络使用(即可由非程序员执行的高流失率,高流量和开放式注册)
它不会妨碍用户体验到临时用户会感到烦恼或沮丧(并可能放弃网站)
它不能涉及小猫,除非它们真的是非常安全的小猫
(+)'安全',我的意思是至少和偏执的用户保密密码一样安全
所以 - 让我们听听吧!你会怎么做?你知道我没有提到过的最佳实践(哦,请你说)吗?我承认我对自己有所了解(结合3和4的想法),但我会让真正的专家在让自己尴尬之前说话;-)
我想限制失败的登录尝试.例如,如果特定用户尝试使用错误的用户名或密码登录4次,我应该在第4次显示CAPTCHA而不是在某个特定时间阻止,并且除非他提供有效的用户名和密码,否则将继续显示CAPTCHA.用户成功登录后,登录尝试将重置为ZERO.
从安全的角度来看,是否检查用户名而不是IP地址?这种方法可以在不使用数据库的情况下实现吗?因为我认为我不需要存储时间,因为我只会显示recaptcha?请提出你的意见.
我有一个现有的PHP MYSQL登录系统.我想记录每个用户登录的历史记录,包括失败的尝试.
我想捕获历史记录中的以下数据:
如何在不更改整个现有登录系统的情况下执行此操作?