Security 当用户输入错误密码时,哪个错误消息更好?

Security 当用户输入错误密码时,哪个错误消息更好?,security,authentication,passwords,Security,Authentication,Passwords,从安全角度看,当用户输入错误密码时,以下两条错误消息之间是否存在任何差异 错误的用户名或密码 密码错误 例如,当您在Gmail.com上输入错误的密码时,它会告诉您“您输入的用户名或密码不正确” 是否出于安全考虑?我认为错误信息:“您输入的密码不正确”对用户来说更为清楚,而且,检查Gmail.com上是否存在用户名非常容易:只需单击“无法访问您的帐户?”并输入用户名。如果用户名不存在,它会告诉你。这样做是为了不给黑客提供额外的信息。如果你说了错误的密码,你就告诉了黑客他们的用户名是正确的,反之亦

从安全角度看,当用户输入错误密码时,以下两条错误消息之间是否存在任何差异

错误的用户名或密码

密码错误

例如,当您在
Gmail.com
上输入错误的密码时,它会告诉您“您输入的用户名或密码不正确”


是否出于安全考虑?我认为错误信息:“您输入的密码不正确”对用户来说更为清楚,而且,检查
Gmail.com
上是否存在用户名非常容易:只需单击“无法访问您的帐户?”并输入用户名。如果用户名不存在,它会告诉你。

这样做是为了不给黑客提供额外的信息。如果你说了错误的密码,你就告诉了黑客他们的用户名是正确的,反之亦然。虽然你所说的是真的,但在一些网站上,你可以通过其他方式确定你是否猜到了用户名

在某些情况下,您不希望攻击者能够猜测帐户的存在。因此,您将始终返回一般错误消息,以便攻击者无法猜测此帐户是否存在

在GMAIL的上下文中,可能是GMAIL不希望人们挖掘现有的电子邮件地址供垃圾邮件机器人使用


您自己可以决定是否需要在应用程序中强制执行安全性,或者是否可以提供更方便用户的错误消息

最简单、最常用的短语是:

“您输入的用户名或密码无效”

这背后的原因是为了防止有人试图通过“猜测”密码来强行使用您的帐户。如果攻击者得到一个错误,详细说明密码不正确,那么他们可以尝试不同的密码,直到获得正确的密码

但是,如果您提供类似于上述的一般消息,则攻击者不知道用户、密码或两者的组合是否正确

法比奥
@fcerullo

只是添加了一些额外的信息。OWASP指南为您提供有关此问题的建议

不管怎样,应用程序都应该以一般错误消息响应 用户ID或密码是否不正确。它还应该给予 没有显示现有帐户的状态


从另一个角度来看,从安全角度来看,这两条消息没有太大区别。至少对于允许注册的站点。黑客可以随时进入注册页面,并尝试使用上述详细信息进行注册。当然,你的网站最初是通过模棱两可的方式进行保护的,它会马上喊出“用户名被占用了!”或“电子邮件已经注册了!”从这一点上看,安全性是一个神话。

怎么样

无效的凭据。请再试一次


我敢肯定,如果你尝试了几千次“无法访问你的帐户”的伎俩,它很快就会被注意到。通过使用电子邮件地址作为用户名,并在尝试注册后始终发送电子邮件,可以缓解此问题。这样,尝试注册的简单行为不会泄露电子邮件地址是否在使用中。@ChathanDriehuys这种技术只是试图通过模糊来保护应用程序。它不仅违反用户体验惯例(与用户清晰地沟通),而且会导致发送大量不必要的电子邮件。请注意,一些开发者使用付费订阅发送电子邮件,可能是为了避免电子邮件以垃圾邮件或其他原因登陆。此外,这是标准的电子邮件发送后,成功注册的形式确认或帐户激活电子邮件,或只是作为欢迎信息。至少可以说,发送注册尝试电子邮件是令人困惑的。我同意你的观点,用户体验会因为这个过程而变得复杂,但这是一个相当标准的做法。例如,它是由OWASP推荐的:@ChathanDriehuys它确实被广泛使用并被OWASP推荐。但这并不是一个好的做法。你有没有注意到“大男孩”正在远离这种做法?谷歌(Google)和Adobe等公司甚至将其提升了一个档次。他们要求您输入一个电子邮件地址才能登录。只有在注册电子邮件后,您才能输入密码。这种做法是否会降低他们登录过程的安全性?有更好的方法来防止暴力猜测,例如限制登录尝试、使用reCAPTCHA等。难道没有更好的方法来防止“猜测”密码吗?限制登录尝试,使用reCAPTCHA等提供了更为用户友好的方法来缓解这些攻击。所谓“用户友好”,我指的是更好的用户体验。