我看过网络应用程序存在用户登录尝试的限制。
这是安全必需品,如果是,为什么?
例如:您有三次失败的登录尝试,让我们在10分钟内再试一次!!
答案 0 :(得分:7)
我曾经看过一种创造性的方法......
对于每次登录尝试,失败时,锁定时间会以指数方式增加。
attempt | lockout time
======================
1 | 2s
2 | 4s
3 | 8s
4 | 16s
5 | 32s
6 | 64s
7 | 128s
8 | 256s
9 | 512s
10 | 1024s
从理论上讲,它可以让用户犯错误,但是一旦它成为“黑客”企图,黑客就会被锁定越来越长的时间。
我自己还没有用过这个,但从概念上讲,我非常喜欢这个想法。当然,在成功登录后,计数器将被重置。
答案 1 :(得分:2)
限制在网站上进行的尝试次数是为了防止对您的网站进行强力(自动)攻击。如果您不限制这些尝试,黑客可以设置一个脚本来猜测密码,直到找到密码,这可能会影响您的Web服务器的可用性。
通常情况下,您可能希望在3次尝试后将用户计时(您提到的时间为10分钟),并在连续6次或9次重复尝试后将其锁定,从而强制用户与您联系以解锁其帐户。这是因为有人可以修改他们的脚本来调整你的超时。
答案 2 :(得分:2)
如果用户可以设置自己的密码,某些bot / kid会尝试使用常用密码列表登录,然后成功。如果他们不了解任何用户,他们会尝试使用admin,simon,rico等常用名称。
只是在会话中标记用户没有帮助,因为他们可以直接删除cookie或查询参数。您需要计算IP和登录名的失败登录尝试次数。也许对IP更宽容,因为它可以在许多用户之间共享。
答案 3 :(得分:2)
澄清 这是对其他答案的完成。例如,使用良好的实施验证码以及使用会话的反暴力机制 提问者将此标记为已被接受,假设机器人无法读取验证码(她几乎正确),因此人们认为它不是一个完整的答案&他们是对的。
使用良好实施的CAPTCHA可能是一种替代方法,可以增强您的应用程序安全性,防止暴力攻击。有一个wide variety of captcha providers可以免费使用,如果你赶时间的话,让我们试试吧。另外请考虑people离开这里说“哦,不!这个验证码不够安全,有时它们也是对的!”。
“对于那些不知道的人,CAPTCHA程序可以判断其用户是人还是其他计算机。他们'当您注册Gmail或在某人的博客上发表评论时,您会翻译那些扭曲文本的小图片。他们的目的是确保某人不会使用计算机自动注册数百万个在线帐户,或者。 。“ref。
答案 4 :(得分:1)
对于我自己的项目,我写了一个广义的'floodcontrol'库来处理这类事情。
它允许我指定在X时间内可以进行的尝试次数。它允许在短时间内进行一定数量的“宽限期”尝试,以便只捕获真正异常的行为。
我在数据库中记录了一些事情:
对于每次尝试,我查询部分IP地址和操作,如果在某个时间窗口内进行了先前的尝试,那么我递增该尝试的尝试计数器。如果尝试计数器超过允许的宽限尝试次数,那么我检查最后一次尝试是否在现在的X秒内,如果是,则返回false - 因此操作将被阻止(并且用户将被告知在尝试之前等待X秒再次)。如果尝试计数器低于宽限尝试次数,那么我返回true并让它滑动。
如果具有相同IP的人稍后来,则不会获取先前的尝试计数,因为它将在很久以前。
答案 5 :(得分:0)
是的,有必要保护帐户免受复杂的暴力攻击 - 例如,使用机器人和字典文件 - 只是试图猜测帐户密码的人。
答案 6 :(得分:0)
我认为在数据库中设置'失败的尝试'计数器将是最安全和最简单的方法。这样用户就无法绕过它(通过禁用cookie)。当然成功登录时重置。
答案 7 :(得分:0)
正确登录后重置失败的尝试几乎使整个系统毫无价值。
然后,任何注册用户都可以对其他人的帐户和密码进行三次猜测,然后使用他们自己登录来重置计数器,并重复 - 这也可以自动化。因此,例如,普通注册用户可以强制管理员密码。
重置需要由管理员完成,而不是简单地成功登录。