在进行多次失败尝试后,我需要忽略来自IP地址的身份验证尝试,以防止凭据猜测。
关于弹簧安全性蛮力保护,有多个博客文章。但是我发现所有这些建议都提出了内存中解决方案,例如:
https://www.baeldung.com/spring-security-block-brute-force-authentication-attempts
我正在处理的应用程序是无状态的,但需要提供暴力保护。实施此方法的合理方式是什么?
答案 0 :(得分:2)
如您所述,本文中描述的方法将登录尝试次数保留在内存中。我认为您仍然可以(并且应该)在无状态应用程序中执行此操作。 “无状态”通常是指不使用服务器上的HTTP会话来跟踪HTTP请求之间的任何用户状态。
如果不使用服务器上的某些内存,就无法跟踪HTTP请求。我不会担心这是否符合“无状态”的定义。
我们正在使用一种非常相似的方法(受同一篇文章的启发),以防止在本来完全无状态的Spring REST服务中进行暴力登录尝试,并且对我们来说很好。
编辑:我可以想到另一种方法:您可以使用fail2ban解析应用程序日志,并(暂时)以“较低”级别禁止恶意IP地址。
答案 1 :(得分:1)
尝试在应用程序服务器中实现防火墙功能是一个坏主意。使用可用于您的日志记录功能来记录您看到登录失败及其来自哪个地址的事实。
然后使用专用防火墙应用程序提供的功能来解析您记录的信息,以发出警报和阻止地址。在Linux上,fail2ban是一个出色的小型实用程序,可以监视您的日志并创建iptables规则以将黑客拒之门外。 iptables是Linux内核防火墙的接口。