这是防止暴力攻击的有效方法吗?

时间:2014-10-16 03:51:42

标签: security brute-force

我是否需要您就这是否是防止用户登录暴力攻击的有效方法发表意见:

  1. 如果用户错误地将密码输入帐户5次,则会被锁定5分钟。
  2. 锁定后,会在我的数据库中添加一条记录,其中包含user_id以及用户可以尝试重新登录该帐户的时间。
  3. 5分钟后,当他们下次尝试登录时,它将检查数据库以查看锁定时间是否已启动。如果是,他们又有5次尝试,如果没有,则显示错误。
  4. 这是反暴力证据吗?

    感谢。

5 个答案:

答案 0 :(得分:5)

有一种非常古老的,也是迄今为止最好的防止蛮力的方法。它起源于多年前的unix,到目前为止仍然有效。它的实现也非常简单:为每次登录尝试添加sleep(3)。 普通用户不必在登录操作上等待额外3秒就会出现任何问题,而且这种情况加上适当的防火墙可以限制来自单个主机的连接数量,这是最有效的暴力杀手。

答案 1 :(得分:2)

我认为加倍的延迟时间加上一个多字密码短语(想想"stack overflow answers",可能会添加一些简单但易于记忆的内容,因此我们也很好地反对字典攻击)几乎完全是粗暴的 - 对用户来说,既可以防止用力也可以不引人注目。这就是我的意思,让我们假设初始间隔为1秒:

  • 第一次失败:延迟1秒
  • 第二次失败:延迟2秒
  • 第3次失败:延迟4秒
  • 第4次失败:8秒延迟
  • 等...

此时可能每个合法用户都会发现他忘记了密码并想找到重置密码的方法。

length

答案 2 :(得分:1)

以下是一些选项:

锁定帐户

在经过一些不正确的登录尝试后,您锁定帐户一段时间。

问题:

  • 对于在相对较长的时间间隔内仅尝试少量登录的慢速攻击无效。
  • 攻击者可以锁定很多帐户,认为这是一个DoS。
  • 攻击者可以根据错误响应获取您网站的部分信息。

锁定IP

使用varius失败登录锁定IP。

问题:

  • 这可以锁定大量用户
  • 对使用代理的自动化工具无效。

暂停

在检查密码时会暂停,这会减慢攻击速度。

问题:

  • 攻击可以是多线程的,因此您或多或少处于相同的情况。

<强>验证码

有很好的算法可以正确识别奇怪的形状/字母/数字。

验证码不是100%有效,但可以减缓攻击速度。

登录某些IP

为用户提供仅允许从某些IP登录的选项。

  • 这对每个用户都不实用。

不添加任何可预测的行为

例如,每次登录失败时都使用不同的错误消息,这可能会误导自动化工具。

答案 3 :(得分:1)

你在正确的轨道上。对于每个连续的无效密码尝试,您应该为数据库中的用户增加计数器字段。如果您试图在会话或cookie中保留该值,恶意用户可能会继续销毁该值并在4次尝试后重试。

我采用了类似的策略 - 经过5次错误尝试后,我们需要验证码。在10次错误尝试后,我们会阻止该帐户直到重置。我们也有一个重置密码和解锁策略。

有人提到过睡眠(3)策略。虽然,不能过快地返回用户身份验证的响应是一个好主意,但它可能不是防篡改的。攻击者可能会产生一系列并发身份验证请求,而不是一系列快速连续请求。至少,根据您的策略,您知道每位用户每天只能进行2400次猜测。考虑将用户切断的时间超过5分钟,特别是一旦他们通过10或15次猜测。

对于偏执狂,请记录每个错误尝试的附加数据,例如请求中的IP地址,用户代理字符串和其他http标头。您可能能够在发生真实攻击时识别模式。

考虑包括记录并提醒相关人员何时用户被锁定。

答案 4 :(得分:0)

是的,它会限制暴力。但合法用户应该有一些恢复程序。