我是否需要您就这是否是防止用户登录暴力攻击的有效方法发表意见:
这是反暴力证据吗?
感谢。
答案 0 :(得分:5)
有一种非常古老的,也是迄今为止最好的防止蛮力的方法。它起源于多年前的unix,到目前为止仍然有效。它的实现也非常简单:为每次登录尝试添加sleep(3)。 普通用户不必在登录操作上等待额外3秒就会出现任何问题,而且这种情况加上适当的防火墙可以限制来自单个主机的连接数量,这是最有效的暴力杀手。
答案 1 :(得分:2)
我认为加倍的延迟时间加上一个多字密码短语(想想"stack overflow answers"
,可能会添加一些简单但易于记忆的内容,因此我们也很好地反对字典攻击)几乎完全是粗暴的 - 对用户来说,既可以防止用力也可以不引人注目。这就是我的意思,让我们假设初始间隔为1秒:
此时可能每个合法用户都会发现他忘记了密码并想找到重置密码的方法。
答案 2 :(得分:1)
以下是一些选项:
锁定帐户
在经过一些不正确的登录尝试后,您锁定帐户一段时间。
问题:
锁定IP
使用varius失败登录锁定IP。
问题:
暂停
在检查密码时会暂停,这会减慢攻击速度。
问题:
<强>验证码强>
有很好的算法可以正确识别奇怪的形状/字母/数字。
验证码不是100%有效,但可以减缓攻击速度。
登录某些IP
为用户提供仅允许从某些IP登录的选项。
不添加任何可预测的行为
例如,每次登录失败时都使用不同的错误消息,这可能会误导自动化工具。
答案 3 :(得分:1)
你在正确的轨道上。对于每个连续的无效密码尝试,您应该为数据库中的用户增加计数器字段。如果您试图在会话或cookie中保留该值,恶意用户可能会继续销毁该值并在4次尝试后重试。
我采用了类似的策略 - 经过5次错误尝试后,我们需要验证码。在10次错误尝试后,我们会阻止该帐户直到重置。我们也有一个重置密码和解锁策略。
有人提到过睡眠(3)策略。虽然,不能过快地返回用户身份验证的响应是一个好主意,但它可能不是防篡改的。攻击者可能会产生一系列并发身份验证请求,而不是一系列快速连续请求。至少,根据您的策略,您知道每位用户每天只能进行2400次猜测。考虑将用户切断的时间超过5分钟,特别是一旦他们通过10或15次猜测。
对于偏执狂,请记录每个错误尝试的附加数据,例如请求中的IP地址,用户代理字符串和其他http标头。您可能能够在发生真实攻击时识别模式。
考虑包括记录并提醒相关人员何时用户被锁定。
答案 4 :(得分:0)
是的,它会限制暴力。但合法用户应该有一些恢复程序。