在太多登录尝试后实施禁止的最佳方式

Jim*_*nks 6 php security authentication ip

在我实施自己的系统禁止太多尝试之后的最后2天,我一直在研究这个问题.但我没有找到我正在寻找的正确答案.这几乎是,实现这个的最佳方法是什么?

目前我通过IP禁令实现,如果同一IP连续登录错误10次,IP禁止30分钟就可以登录,他们仍然可以浏览网站.但是,如果这种情况发生在人口密集的地区,例如大学校园,这不会有效阻止整个学校的登记吗?

那么有没有更好的方法来做到这一点,不使用IP地址?我以为我可以用cookie做到这一点,但用户试图暴力破解帐户可能只是在每10次尝试后删除他们的cookie.

eme*_*eth 6

使用两个字段创建名为"failed_logins"的mysql表,"用户"字段/外键和"时间戳"字段.

用户成功登录后,删除该用户的所有"failed_logins"行.

当用户登录失败时,使用当前时间戳为该用户在"failed_logins"中创建一个新行.

在每次登录尝试给定用户之前,请先检查密码是否正确/不正确:

  • 运行查询,删除超过15分钟的所有"failed_logins"行(例如).

  • 运行查询,检查fail_logins中尝试登录的用户的行数.如果> = 5(例如),请终止登录尝试,通知用户他们已被锁定在帐户之外并稍稍尝试.

结果:在15分钟内登录尝试失败5次后,用户将被锁定在帐户之外.


Sam*_*Sam 5

我曾经采用的一种方法与我在银行电子银行页面上遇到的方法类似。它禁止在每个帐户的基础上在越来越长的时间内进一步登录,例如 5 次尝试,例如等待 10 秒、1 分钟、5 分钟、15 分钟,然后是 30 分钟。攻击者通常针对特定帐户。还应该为每个 IP 地址应用一个全局规则,在一定次数的尝试后锁定登录,尝试次数必须超过 5,比如 10。除了这两个规则之外,您可以比较浏览器和 cookie 等以增加容忍度。