我目前正在加强我的网络应用程序的安全层,并且我对登录暴力保护的实施有一些疑问:
我应该使用什么存储来存储每个用户/IP 登录失败的计数器?一个简单的 APC/Memcache 条目是否足够,还是需要更稳定和持久的存储方法,还意味着每次登录时都需要额外的 SQL 查询或文件写入?甚至将它们存储在会话条目中(我的会话由 Memcache 处理,因此完全相同)。
关于系统范围计数器的相同问题(为了在分布式蛮力尝试的情况下触发登录锁定或限制......)?我认为这里的持久性更为关键,但它也意味着每次登录时都需要查询/写入。
检测到的登录蛮力尝试的适当返回响应是什么?我应该返回一个 404 错误,一个 503 服务不可用?或者甚至通过 IPTables/Netfilter 通过 DROPing 甚至 TARPITing 攻击者 IP 来更深入?我说的是真正检测到的蛮力尝试,而不是用户因为不记得他的通行证而导致某些登录失败的情况。
我原本以为一个缓存存储(APC/Memcache)就足以存储计数器,但我担心缓存会因为什么原因而失败,从而使这个防御层失效。
对于其他所有考虑,我已经阅读了一些不错的帖子,例如What-is-the-best-distributed-brute-force-countermeasure和Number-of-attempts-to-brute-force-an-average-password,但请随意提出任何建议,将不胜感激。