当登录失败时,不安全地告知用户登录凭据的哪些部分是错误的?

时间:2011-12-23 05:15:15

标签: security login

我无法在谷歌上找到任何东西,但这是我脑子里已经有一段时间的问题了,所以我想我会把它呈现在这里。

假设您正在设计典型的用户名/密码登录信息。您设置一个表单,用户输入其用户名和密码,然后单击按钮登录。现在,假设他们输入的密码错误。 一般说登录失败是否更好,或者是否可以专门通知用户他们的密码是错误的?

我的想法是告诉他们确切地说他们的凭据的哪一部分是错误的,这会使黑客攻击更容易,因为黑客可以确定有效的用户名,然后继续尝试该用户名的密码。如果错误消息是通用的,并且没有说明用户名或密码是否错误,则对他们来说变得更加困难。当然,理想情况下,该系统的设计目的是使蛮力黑客行为不可行。

当我尝试登录某个地方并且登录失败时,我发现在给出一般错误消息时有点令人沮丧。如果我不记得我的用户名是什么,然后最重要的是我可能使用了与正常情况不同的密码,这使我更难以弄明白,因为我正在使用两个变量而且从不知道我是否有正确的两个。

我很感激有关此的任何意见。我倾向于为我正在设计的系统提供特定的错误消息,因为它为用户提供了更多信息和便利,但我可以说服其他人。

谢谢!

5 个答案:

答案 0 :(得分:4)

取决于网站的性质。如果这是一个在线银行应用程序,那么不要给任何东西。

如果只是登录论坛或评论然后告诉我使用了错误的用户名/ email / passwd将避免很多挫折

答案 1 :(得分:4)

我个人认为告诉用户帐户不存在是不好的做法。看一下Google(或大多数其他大型Web服务提供商)的示例。使用Gmail登录失败时返回的错误消息为:http://support.google.com/accounts/bin/answer.py?hl=en&p=mail&ctx=ch_ServiceLoginAuth&answer=27444

请注意,即使用户名不存在,也会返回完全相同的错误。这可以防止潜在的攻击者/垃圾邮件制造者通过“未找到用户”和“用户名/密码失败”之间的差异来挖掘电子邮件地址。

参考:http://www.harezmi.com.tr/how-to-keep-hackers-informed-about-your-users/?lang=en

答案 2 :(得分:3)

坦率地说,我不明白为什么你不应该告诉用户出了什么问题。有些人会不同意我的意见,如果我们可能给攻击者提供有效的用户名,那么当然会在SQL注入攻击和暴力攻击中使用,这可能会带来安全风险。但是我通过这些观点激发了我的答案。

  1. 第一个来自您自己的问题

      

    当然,理想情况下,该系统的目的是使蛮力黑客行为不可行。

    这确实是关键,如果你有适当的机制,例如每小时只允许一次失败的用户名尝试,每小时每个IP地址的有限失败尝试,长密码等等,将大大减少即使用户知道用户名,攻击者也有机会强行输入密码。如果他们每个用户只能测试10个密码,并且每小时总共需要100个密码,则需要大约285天来测试每个可能的6个字符ASCII密码组合,以及1995年7个字符密码。我知道攻击者可以伪造IP地址,所以这个具体的方法本身并不是水密的,但它可能会严重阻碍暴力破解,这是我的观点。

  2. 通用错误消息与Security by Obscurity接近。攻击者可能已经知道一个或多个用户名。即他们知道邮件地址,人们经常使用相同的用户名,他们使用时间(如Jonathan Leffler所指出的)来确定他们的用户名是否有效,某些用户名是否常见(例如管理员和管理员)等等。如果您的部分安全性依赖于攻击者不应该知道/猜测用户名这一事实,那么他们就会毫无准备。

  3. 存储过程可以降低SQL注入攻击的风险,并使用基本的安全措施(不使用像domain.com/delete/user/username/这样的网址来做事情并在授权时保持警惕)攻击者可以除了尝试暴力之外,用户名真的很多。

  4. 所以基本上我认为风险非常低,而且用户的利益也很高。它还鼓励您作为开发人员不要对安全性感到懒惰。

答案 3 :(得分:2)

模糊的主要原因恰恰是让黑客更难猜测用户名或密码是否错误。一旦他们获得了用户名,他们就可以根据具有压抑效果的用户名开始猜测密码。

所以,对于任何关注黑客攻击的事情(粗略地说,你认为密码是个好主意的任何系统),不要让他们知道哪个是错误的 - 在相同的时间内给出相同的消息无论用户名或密码是否错误。

(时间也很重要;如果攻击者发现一个坏的用户名需要3毫秒才能回来而一个错误的密码需要10毫秒,那么你告诉他们用户名或密码是否错误。缩放时间以适合您的应用 - 但如果存在差异,有人会使用该信息自动进行定时攻击,即使由于互联网在时间上存在噪音。)

答案 4 :(得分:0)

我会选择一般错误消息(“使用给定的电子邮件/密码登录失败”)和工作密码重置功能(通过电子邮件)。