限制PHP中的用户登录尝试

6 php security captcha login brute-force

我见过网页应用程序有限制用户登录尝试.

这是安全必需品,如果是,为什么?

例如: 您有三次失败的登录尝试,让我们在10分钟内再试一次!!

scu*_*ffe 7

我曾经看到过一种创造性的方法......

对于每次登录尝试失败,锁定时间会以指数方式增加.

attempt | lockout time
======================
   1    |     2s
   2    |     4s
   3    |     8s
   4    |    16s
   5    |    32s
   6    |    64s
   7    |   128s
   8    |   256s
   9    |   512s
  10    |  1024s
Run Code Online (Sandbox Code Playgroud)

从理论上讲,它可以让用户犯一两个错误,但只要它看起来像是一次"黑客攻击"尝试,黑客就会被锁定越来越长的时间段.

我自己还没有用过这个,但从概念上讲,我非常喜欢这个想法.当然,成功登录后,计数器将被重置.

  • 我之前已经实现了类似的东西,但发现它不够宽容; 有时人们真的忘记了他们的密码,需要尝试几种不同的组合 - 也许尝试这样的事情,但要确保前6个都是0,然后开始逐渐增加,浅薄. (2认同)

sep*_*ehr 2

澄清 这是对其他答案的补充。例如,使用良好实现的验证码以及使用会话的反暴力破解机制。
提问者将此标记为已接受,假设验证码无法被机器读取(她几乎是对的),因此它得到了负分,因为人们认为这不是一个完整的答案并且他们是对的。


此外,使用良好实施的验证码可能是增强应用程序安全性以抵御暴力攻击的另一种方法。有各种各样的验证码提供程序免费提供,如果您赶时间,让我们尝试一下简单的方法。另外请考虑一下,这里有人“哦,不!这个验证码不够安全,但他们有时是对的!”

“对于那些不知道的人来说,验证码是一种可以辨别用户是人类还是另一台计算机的程序。它们是那些扭曲文本的小图像,当您注册 Gmail 或发表评论时,您可以翻译它们在某人的博客上。他们的目的是确保某人不会使用计算机自动注册数百万个在线帐户,或者..” ref .

  • @artarad:如果我每次尝试登录时都收到验证码,我会非常恼火。我认为在他们失败 3 次之前不应该显示它,然后也许再给他们 3 次左右的尝试,然后再将他们锁定一段时间。验证码并不是机器无法破解的……只是更加困难。我认为我的教授用他的脚本破解了 90% 以上的问题。 (2认同)