多次登录失败尝试的操作 - 验证码

Posted

技术标签:

【中文标题】多次登录失败尝试的操作 - 验证码【英文标题】:actions on several login fail attempts - Captcha 【发布时间】:2013-05-06 04:56:28 【问题描述】:

我正在为一个网站编写登录脚本,我需要一些指导。我担心它的安全性..

涉及两件事,登录页面和登录类,我管理安全性如下..

login.php 中的表单有一个令牌,当用户提交表单(目标为“php_self”)时,我调用该类并:

验证令牌 检查用户是否被屏蔽 使用 bcrypt 检查密码是否正确。 如果登录失败,则将该用户上次登录的尝试次数和日期时间存储在数据库中 如果它是第二次尝试,我将 recaptcha 放入表单中。验证码通过 jquery/ajax 进行验证(出于可用性原因),并在提交后在类中再次验证服务器端(以防有人强制 ajax 发布调用).. 如果第 5 次尝试失败,该帐户将被锁定 10 分钟。

您是否发现任何安全漏洞?

我找到了一个,但不知道如何修复它。

如果失败尝试是“x”并且需要recaptcha,用户可以单击“登录页面”链接(不刷新),并找到没有recaptcha 的表单(因为尝试为0)。我可以创建一个会话变量“尝试",但是这个可以和ajax调用一样强制,对吧?

提前感谢您的帮助

【问题讨论】:

您怎么知道是同一用户再次尝试登录? 因为用户使用邮件登录并通过。我在数据库中有一个表,其中存储了用户 ID、尝试和上次登录。当用户提交表单时,我签入该表。 【参考方案1】:

我看到的一个安全问题是当机器人创建随机邮件和密码并继续登录时。由于电子邮件每次都不同,你不知道它是同一个“机器人”,它会让你的网络服务器忙碌并且让它慢一点。

解决这个问题:

    您可以随时使用 CAPTCHA 您可以获取呼叫者 IP 并根据 IP(而不是电子邮件)执行您的规则。当此 IP 尝试多次时,您可以在防火墙上阻止它。

【讨论】:

我实际上正在研究 xampp,对防火墙不太了解.. 但我会搜索一下,谢谢! 阻止 IP 由您的管理员完成。在编程方面,验证码在这种情况下会有所帮助。 但是我可以根据 ip 阻止用户登录,检查它对数据库的尝试.. 对吗? 但是攻击者会不断尝试登录,只有在服务器端你会知道他的IP来阻止他。在蛮力攻击中,他会让你的服务器忙碌而缓慢。 感谢您的回答....好的,所以不能用php在服务器端完成..然后我有2个问题,1)登录脚本应该只检查用户/密码,令牌和验证码? 2) 如果必须在 php 之外检查 ip.. 主机是否已经提供该服务?【参考方案2】:

这种方案的最大问题是您阻止(或验证)用户而不是 IP 地址。这会打开一个漏洞并且不会停止暴力破解:

    蛮力机器人可以对每个帐户进行两次猜测,而无需任何验证码或阻止。因此,机器人会在您系统上的每个帐户上尝试“密码”和“123456”,并且可能有 2% 的时间成功。您想在这个机器人对每个帐户进行两次猜测之前就停止它。特别是如果您使用 bcrypt,这在 CPU 方面非常昂贵。 恶意恶作剧者可以锁定任何他们知道电子邮件地址的用户,只需每 10 分钟尝试以该用户身份登录 5 次。

请注意,阻止 IP 地址带有自己的一组误报和漏报。合法的代理服务器和僵尸网络意味着阻止 IP 地址可能会导致问题。它确实解决了 90% 的暴力破解问题。

CAPTCHA 还带有自己的一组误报和漏报。我知道我在阅读大量 ReCAPTCHA 图像时遇到了麻烦,而且我看到机器人攻击我的系统比我能更好地解决 ReCAPTCHA。除了它对我的客户产生的安慰剂效应之外,我再也不用 CAPTCHA 了。

你说:

用户可以点击“登录页面”链接(不刷新),找到没有recaptcha的表单(因为尝试为0)

这是为什么?如果尝试计数存储在数据库中,为什么单击该链接会更改尝试计数?

尝试计数是否有自动超时? 登录成功会重置吗?

如果您实施了基于会话的阻止,蛮力机器人甚至可能不会注意到您的阻止。会话基于 cookie,除非您的登录表单需要会话中的某些内容,否则机器人甚至不会在登录后发送该 cookie。即使它是必需的,机器人也可以随时通过不发送该 cookie 来获取新的、未阻止的会话 cookie。

【讨论】:

关于在 x 次登录尝试失败后阻止用户的问题(蛮力和恶意恶作剧).. 所以你认为要走的路是阻止 ip?使用下面这样的函数并存储返回值会是一种更好的方法吗? ***.com/a/3358212/1736512 ||在“登录页面”上回答您的问题是因为在用户提交表单(使用他的电子邮件)后,我调用登录过程类并检索尝试次数,顺便说一句,现在听起来毫无意义..

以上是关于多次登录失败尝试的操作 - 验证码的主要内容,如果未能解决你的问题,请参考以下文章

一段时间内阻止多次登录不成功的请求

多次登录失败用户被锁定及使用Pam_Tally2解锁

Facebook 登录设置失败

微信新手机登录扫描验证失败怎么办

sql windows登录失败怎么办

登陆界面代码