每分钟允许尝试密码最大次数,的最佳实践是什么?
資深大佬 : black11black 5
如题,想问问大家的服务都是如何实现不让人随便猜密码的。
系统层面一般搞个 fail2ban 就很轻松解决防止暴力破解的问题了,一般部署 web 业务则要自己搞。我简单想了一下用过的方案有几种:
1 、业务节点维护 IP 计数:优点是简单粗暴,缺点是节点有状态,我个人莫名其妙得了一种节点有状态就很不爽的病。
2 、另外创建一个 redis 服务,各节点共同维护计数状态:优点很多,缺点是另外多开一个服务增加了系统复杂性,部署、维护起来感觉麻烦。
3 、在 sql 里维护共同的计数状态:一般很难有网站不接关系型数据库的,所以这个可以利用已有服务算是优点。但是另一方面我想到的一个问题是,因为 sql 读写远慢于 redis,所以如果被恶意攻击 sql 压力会很容易吃满。比如一般 nginx 部署的时候可能限制比如单 IP 每分钟最大访问 300q,那如果遇到了坏东西,只需要几个 IP 就可以让 sql 读写产生明显迟滞,似乎也不太妥?
==============================
好奇生产上的最佳实践是什么,有没有什么取巧的方式?
大佬有話說 (7)