Security 防止暴力登录尝试

Security 防止暴力登录尝试,security,server,accounts,Security,Server,Accounts,我想防止黑客侵入我的用户帐户。人们常说: 锁定帐户的最佳方法 登录尝试失败后,x暂时 我理解这一点,这似乎是个好主意。例如,使用IP是一个非常糟糕的主意——亚洲至少有一个国家在使用IP,所以IP不能用于任何用途 不幸的是,锁定带来了一个真正的问题。它显示帐户是否存在的信息。我们不想这样做,这就是为什么我们总是写“电子邮件和密码不匹配”或类似的东西 我无法锁定不存在的帐户-否则我将不得不存储有关登录尝试失败的不存在帐户的信息。僵尸网络可能会在我的数据库中产生数十亿条记录——这些记录都是不存在的账户

我想防止黑客侵入我的用户帐户。人们常说:

锁定帐户的最佳方法 登录尝试失败后,
x
暂时

我理解这一点,这似乎是个好主意。例如,使用IP是一个非常糟糕的主意——亚洲至少有一个国家在使用IP,所以IP不能用于任何用途

不幸的是,锁定带来了一个真正的问题。它显示帐户是否存在的信息。我们不想这样做,这就是为什么我们总是写“电子邮件和密码不匹配”或类似的东西

我无法锁定不存在的帐户-否则我将不得不存储有关登录尝试失败的不存在帐户的信息。僵尸网络可能会在我的数据库中产生数十亿条记录——这些记录都是不存在的账户

处理这个问题的可能性有哪些?为了防止暴力攻击,同时不透露帐户是否存在的信息?

两点:

锁定账户并不意味着什么;这只意味着即使是正确的身份验证程序也无法登录。您没有回答“好的,这是正确的密码,但您的帐户被锁定”,您继续回答“不正确的名称/密码组合”,与以前一样。具有真实验证器的真实用户将等待10分钟进行重置,或致电帮助台进行手动重置。暴力攻击者将继续尝试其他密码

假设发生远程攻击,在三次(或五次,或任何您认为合适的)名称/密码组合失败后,断开连接。这取决于帐户是否存在,密码是否正确(以及帐户是否已锁定)。同样,对攻击者来说没有有用的信息,对健忘或容易打字的授权用户来说有轻微的不便(重新连接)。

两点:

锁定账户并不意味着什么;这只意味着即使是正确的身份验证程序也无法登录。您没有回答“好的,这是正确的密码,但您的帐户被锁定”,您继续回答“不正确的名称/密码组合”,与以前一样。具有真实验证器的真实用户将等待10分钟进行重置,或致电帮助台进行手动重置。暴力攻击者将继续尝试其他密码


假设发生远程攻击,在三次(或五次,或任何您认为合适的)名称/密码组合失败后,断开连接。这取决于帐户是否存在,密码是否正确(以及帐户是否已锁定)。同样,对攻击者没有有用的信息,对健忘或容易打字的授权用户有轻微的不便(重新连接)。

我的团队刚刚解决了完全相同的问题,考虑到我们的解决方案最终是多么简单,要达到这一点还有很长的路要走

这里需要考虑的因素太多了,您已经介绍了其中的大部分。幸运的是,所有DDoS/DoS都由我们的IaaS提供商处理,因此我们不必担心任何问题。我的第一个建议是,如果您不使用这样的服务,我建议您这样做,正确地实现这些内容并不是一件小事

由于所有的基础设施都是为我们处理的,这使我们能够专注于应用程序本身。我们的第一反应是看一个锁定方法,然而,经过一些讨论,甚至只是简单地了解它的工作原理、实现等。我们发现它有很多潜在的陷阱(您提到的IP就是其中之一),我们决定放弃它

然后我们问了一个问题“我们到底想做什么?”,最终我们想防止机器人和黑客的暴力攻击,但同时为真正的用户维护一个良好的用户体验……当一分钱掉下来的时候,我们真不敢相信这有多简单——使用一个

实现非常简单,在X次尝试失败后,我们向表单中添加验证码,并强制用户验证该验证码及其凭据。我们认为这为我们提供了安全性和可用性之间的最佳平衡,因为:

  • 我们不会将真正的用户拒之门外,让他们等待更长的时间才能访问我们的服务,从而进一步挫败真正的用户
  • 我们很可能会阻止大多数自动/机器人暴力尝试,例如字典攻击
  • 我们通过限制登录请求来进一步减少拒绝服务的机会
  • 我们将恶意用户的速度降低到他们认为“这真的值得花时间吗?”

我的团队刚刚解决了这个完全相同的问题,考虑到我们的解决方案最终是多么简单,实现这一目标还有很长的路要走

这里需要考虑的因素太多了,您已经介绍了其中的大部分。幸运的是,所有DDoS/DoS都由我们的IaaS提供商处理,因此我们不必担心任何问题。我的第一个建议是,如果您不使用这样的服务,我建议您这样做,正确地实现这些内容并不是一件小事

由于所有的基础设施都是为我们处理的,这使我们能够专注于应用程序本身。我们的第一反应是看一个锁定方法,然而,经过一些讨论,甚至只是简单地了解它的工作原理、实现等。我们发现它有很多潜在的陷阱(您提到的IP就是其中之一),我们决定放弃它

然后我们问了一个问题“我们到底想做什么?”,最终我们想防止机器人和黑客的暴力攻击,但同时为真正的用户维护一个良好的用户体验……当一分钱掉下来的时候,我们真不敢相信这有多简单——使用一个

实现非常简单,在X次尝试失败后,我们向表单中添加验证码,并强制用户验证该验证码及其凭据。我们觉得这给了我们最好的b