防止蛮力登录尝试[关闭](Preventing brute-force login attempts

2019-10-23 08:48发布

我想,以防止黑客闯入我的用户帐户。 这就是常说的:

最好的办法是进入锁定账号后暂时 x失败的登录尝试。

我明白这一点,这似乎是一个不错的主意。 使用IP的例子是一个非常糟糕的主意 - 有亚洲NAT映射,所以IP的,不能用于任何至少一个全国。

不幸的带有锁定一个真正的问题。 是否存在该帐户它揭示了信息。 我们不想这样做,这就是为什么我们总是写“电子邮件地址和密码不匹配”或这样的事情。

我不能闭锁不存在的帐户 - 否则我将不得不存储关于不存在的账户,登录尝试失败的信息。 那么僵尸网络可能导致数十亿美元的在我的数据库记录 - 不存在的帐户。

什么是处理这个问题的可能性? 为了防止暴力攻击,并在同一时间不露的账户是否确实存在与否的信息?

Answer 1:

我的团队刚刚解决了这个完全相同的问题,并给出我们的解决方案最终如何简单的是,这是一条漫长的路到那里。

有这么多的因素需要考虑到这里,其中大部分你已经覆盖。 幸运的是,所有的DDoS / DoS攻击的东西是由我们的IaaS提供商处理,所以我们不必担心任何的。 如果你不使用这样的服务,我建议您这样做,实现这个东西正常是不平凡的我的第一个建议是。

与所有的基础设施正在为我们处理,这让我们能够专注于应用程序本身。 我们的第一反应是看一个锁定的方式,但是,经过一番讨论,甚至只是通过它如何运行的一个简单的步行路程,实施等,我们在它(IP一个你提到是一个),我们发现很多潜在的隐患决定放弃它。

然后我们问这个问题:“ 它到底是什么,我们正试图在这里做什么?”,最终我们要防止双方机器人和黑客,同时维持正版的用户一个很好的UX蛮力攻击....当一分钱下降,我们实际上无法相信多么简单,它是-使用验证码 。

实现是非常简单的,经过X失败的尝试,我们添加了一个验证码到窗体,并强制用户使用自己的凭据一起验证这一点。 我们觉得这给我们的安全性和易用性,因为之间的最佳平衡点:

  • 我们不进一步通过锁定出来,使他们等待更长的时间来访问我们的服务阻挠正版用户
  • 我们将最有可能阻止大多数自动/ BOT蛮力尝试,例如字典攻击。
  • 我们通过节流登录请求进一步降低DoS攻击的几率
  • 我们恶意用户放慢速度,他们认为这一点“ 是不是真的值得的时间?”


Answer 2:

两点:

锁定帐户没有任何信号; 它只是意味着,即使正确认证无法登录。 你不回复“OK,这是正确的密码,但您的帐户被锁定,”你继续回答“不正确的名称/密码组合”如前。 真正的用户,与真正的认证,要么等待十分钟复位或打电话到服务台进行手动复位。 蛮力攻击者会继续尝试其他密码。

假设远程攻击,三节过后(或五个,或任何你认为合适)不成功名/密码组合,断开连接。 这是否存在帐号,密码正确(和帐户锁定)或不正确的。 同样,没有有用的信息给攻击者,小小的不便(重新连接)到健忘或错字易授权用户。



文章来源: Preventing brute-force login attempts [closed]