gpt4 book ai didi

security - 告诉用户帐户已被锁定是否存在安全风险?

转载 作者:行者123 更新时间:2023-12-02 03:35:01 25 4
gpt4 key购买 nike

我有一个网站,用户可以在其中登录以访问受限页面。我正在努力使它尽可能安全,因此我尝试遵循“最佳实践”。

为了降低对登录页面进行暴力攻击的风险,我只允许用户尝试登录一定次数。如果用户3次登录失败,账户将被锁定,必须解锁后用户才能再次登录。

我的问题是当账户被锁定时是否应该在登录页面上告诉用户?

从可用性的角度来看,显示一条消息告诉用户帐户已被锁定似乎是正确的做法。但这是否意味着攻击者可以使用它来查找现有用户名?

在一次登录尝试失败后,我只向用户显示“用户名和/或密码不正确”的消息,即我从不告诉用户到底出了什么问题。我这样做是因为否则攻击者可以通过尝试大量用户名来找到现有的用户名,并查看错误消息何时从“错误的用户名”变为“错误的密码”。这是我读过的有关安全的文章推荐的。但是,如果我在帐户被锁定时告诉用户,我会不会遇到同样的情况?攻击者可以尝试很多用户名 3 次,如果显示帐户已锁定的消息,则攻击者知道存在使用该用户名的帐户。

我总是会向帐户被锁定的用户发送电子邮件,但我相信用户不一定会立即看到,并且可能会继续尝试登录,即使帐户已被锁定。我认为这会在用户中造成一些烦恼,特别是如果知道他们使用了正确的凭据并且仍然收到凭据无效的消息(实际上帐户已被锁定,因此凭据无关紧要)。

那么我应该怎么做呢?您自己是如何实现的?

最佳答案

From a usability perspective it seems like the right thing to do to show a message to tell user that the account has been locked. But wouldn't that mean that an attacker could use that to find existing usernames?

取决于您如何实现它 - 如果您只显示有效帐户的消息,那么这将是 username enumeration漏洞。

但是,如果您将所有登录尝试与用户表分开存储,那么您也可以为无效帐户显示虚假的帐户锁定消息。

例如记录所有尝试

Date/Time        Username    Successful
06/06/14 10:00 foo false
06/06/14 10:01 foo false
06/06/14 10:02 bar false
06/06/14 10:03 foo false

其中 bar 是有效用户而 foo 不是 - 但如果有人再次尝试以 foo 身份登录,现在您可以检查日志的最后 30 分钟并显示 Foo: Your account has been locked..

另请注意,如果您将有效用户拒之门外,这也可能被视为一种针对有效用户的 DoS 攻击。更好的方法可能是对同一用户名或同一 IP 地址的重复尝试进行速率限制。这应该并行完成,以防止攻击者使用多个线程来破坏您的节流。

关于security - 告诉用户帐户已被锁定是否存在安全风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24059640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com