在无效登录尝试后阻止浏览器实例

Pra*_*ant 1 browser security cookies web

我们对 Web 应用程序有安全要求。我们需要在 3 次无效登录尝试后阻止浏览器实例(包括所有选项卡)。它应该与用户 ID 无关。例如,我打开一个浏览器实例并使用三个不同的用户登录,但都失败了,当我尝试第四次尝试时,它应该在登录页面上出错,说关闭浏览器实例并尝试新实例。

我的问题是如何在服务器端识别浏览器实例。有哪些策略?

一种选择是使用 cookie 使用会话 ID。但是,即使用户在两次尝试之间清除了 cookie,我也想让它工作。

还有其他想法吗?

Gra*_*ray 5

您尝试在浏览器端做的任何事情实际上都是毫无意义的。它不会阻止单个恶意用户,只会让忘记密码并正在尝试他们能想到的一切的无知用户感到沮丧。

处理这种事情最好的办法就是“站在巨人的肩膀上”。像 Google/Facebook 这样的大牌是如何处理这个问题的?如果您只关注安全性,而不真正关心用户体验,那么这将不是您的理想答案。但是,如果您必须在两者之间取得平衡,我会这样做。

看看谷歌是怎么做的。您可以为每个用户每个 IP 地址尝试几次(如果您还没有开始记录,则需要开始记录)。在几次尝试失败后,您向他们展示 CAPTCHA。如果他们继续尝试,您就不再与机器人打交道,您可以相应地进行调整。您必须通过帐户和 IP 来处理此问题,因为恶意用户只会更改其 IP 以继续攻击一个帐户,因此您需要能够处理这两种情况。

尝试通过向用户展示(希望)使用“忘记密码”功能是多么容易来帮助用户。也许如果您看到来自同一个 IP 的用户名尝试次数足够多,您可以将其升级为“锁定”模式。但是要小心,恶意用户可以使用多个IP地址,有时普通用户都通过一个IP连接。还要确保他们不能锁定您的(管理员)帐户(或您数据库中的每个人)。