为什么Gmail在登录失败时不提示是用户名还是密码错误?

Why doesn't Gmail indicate whether it is the username or password that is incorrect when a login fails?

我有一个问题。为什么当其中一个凭据(如用户名或密码)错误时,Gmail 会抛出类似 The email and password that you entered don't match 的消息。为什么他们不抛出用户容易理解的错误,例如:

  1. 如果用户名有效但密码无效,那么它应该抛出一个 类似 Password does not match..

  2. 的消息
  3. 如果密码有效但用户名无效,那么它应该抛出一个 类似 Username does not match..

  4. 的消息

为什么他们每次都抛出 The email and password that you entered don't match 之类的消息?

在抛出的错误消息方面更加具体是否存在安全问题?

是的,我想如果他们说某个用户名是有效的,那么该用户名就可以成为黑客攻击的目标。

因为该错误消息过于冗长,如果他要对登录页面进行暴力破解,则可以帮助黑客通过系统(因为他会知道哪个字段是正确的)。强烈建议不要提供冗长的错误消息,例如 Username is correct however password does not match。注意 - 并不一定意味着黑客只会通过系统进行暴力破解;当 Web 应用程序返回详细错误时,bruteforce 恰好是一种常用方法。

实际上,new Gmail login page does not do that - 它要求您在第 1 步中输入用户名,然后在第 2 步中输入密码。

如果您透露一个帐户是否存在,您就是在打开一个 username enumeration 漏洞。这对于攻击者用于密码猜测或网络钓鱼攻击很有用:

As an attacker if I can use your login or forgotten password page to narrow my list from 10000 targets to 1000 targets, I will.

请注意,某些系统(如 Gmail 或 Facebook)会考虑用户名 public,因此这不属于特别高风险的漏洞。

但是,如果您 运行 "John's Dating Site"(或 Ashley Madison)和 Alice 可以简单地通过使用 Bob 的电子邮件作为用户名尝试登录表单来确定她的丈夫 Bob 是否是会员,那么您手上有隐私问题。有趣的写在这里:Your affairs were never discreet – Ashley Madison always disclosed customer identities。他们几乎 修复了他们的用户枚举错误,但还没有完全修复。

另外,你说的第二点也不可能。如果用户输入了无效的用户名但输入了有效的密码,身份验证系统将无法确定密码是否正确,因为它不知道要验证哪个用户名。即使可以,透露至少一个用户拥有该密码也是一个安全问题。