虽然有很多关于验证码实现的讨论,但我找不到任何有关在什么情况下应该要求验证码的详细信息,特别是对于为消费者提供服务的金融应用程序。
我想到的一些规则:
- 如果 3 次登录/注册尝试失败
- 如果用户已登录,则出现 3 次重复调用。
我相信这些规则是由安全风险驱动的,是否有更好的方法来管理这个问题?有什么库可以帮助解决这个问题吗?
最佳答案
不幸的是,在这种情况下,您总是必须在安全性和便利性之间做出妥协。我认为你选择的具体数字是可以的;人类可能不会做这些事情,即使做了,也可能不是合法用户。我建议您在开始要求验证码才能继续之后,还继续对这些案例进行计数,并在某个时刻记录警报,并最终在其行为失控时禁止该 IP 地址。
您必须妥协的一个地方是跟踪用户的方式。如果您通过 cookie 来执行此操作,则会更准确,但机器人在大多数情况下无法发送 cookie,从而逃避您的跟踪。那么,唯一真正的解决方案就是通过 IP 地址进行跟踪。这样做的问题是,共享 IP 地址后面的任何用户看起来都是一样的,因此,如果三个用户一次登录均失败,那么看起来(大部分)与一个用户失败 3 次相同。此外,如果有人因滥用您的网站而被合法禁止并且使用共享 IP 地址,则其他合法客户可能会受到影响。
总而言之,您需要在安全性和便利性之间找到所需的平衡点。
关于security - 何时询问验证码规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465056/