我注意到新的gmail登录名首先询问用户名,然后确认用户名是否存在,然后询问密码输入。
这难道不违背传统的安全智慧,即不泄露用户名是否存在的信息,以阻止尝试许多可能的用户名的攻击类别吗?
我猜想Google知道他们在做什么,那么这是否意味着他们有某种方式来防范传统上被认为是漏洞的漏洞呢?
发布于 2015-05-08 18:28:30
对于较小的网站,你不想让黑客枚举你的用户列表,但是对于谷歌来说,这个网站太大了,你可以假设几乎每个人都有一个或几个账户。因此,在普遍存在的阈值之后,风险被最小化了。
对于大多数网站来说,不透露用户名是否存在仍然是个好主意,但风险需要与新的用户注册过程进行权衡。您要防止的是自动枚举列表的过程。新的用户注册过程应该包括某种形式的延迟或门,这样脚本就不能快速地尝试用户字典。这通常是通过发送带有联合国/成功注册过程结果的电子邮件来实现的。是的,仍然可以列举,但是还有一个延迟和一个额外的步骤。
另一件要考虑的事情是公共网站和私人网站之间的区别。Google是一项公共服务,用户名也是公开的(每个帐户发送的电子邮件都会公开)。另一方面,只有当前员工才能访问的内部公司网站是私有的,需要更严格的控制来防止枚举。
发布于 2015-05-08 20:18:01
杰夫·阿特伍德( Jeff ),在登录语篇时,有话要说在这个主题上:
这是一个长篇讨论的来源,关于当用户在“忘记密码”表单中输入电子邮件地址时,向用户透露是否有意义,我们是否在文件中有该电子邮件地址。在许多网站上,在以“忘记密码”形式输入电子邮件地址后,您会看到这样的消息:如果一个帐户与name@example.com匹配,您应该收到一封电子邮件,说明如何很快重置您的密码。注意"if“,这是一个避免暴露网站上是否存在给定电子邮件地址所涉及的所有安全问题,只需在忘记密码表单中输入它。我们非常认真地选择安全的默认话语,所以你不会被利用或滥用,或者被垃圾邮件发送者淹没。但在体验了现实世界之后,“我们又使用了哪一封电子邮件?”我们自己在几十个语篇实例上登录状态,我们意识到,在这种特殊情况下,用户友好比安全重要得多。
发布于 2015-05-09 09:21:56
对于Gmail,您可以通过向@gmail.com地址发送电子邮件来确定帐户是否存在。如果它反弹了,这个帐户就不存在了。
许多电子邮件提供商都是如此。在这里,用户名不被认为是秘密。如果用户有电子邮件地址foo@example.com,每个人都知道foo在example.com有一个用户名foo@example.com的帐户。
然而,对于大多数其他系统来说,泄露用户名是对隐私的侵犯。如果有人发现bob@example.com在nostringsattacheddating.example.org上有个账户,鲍勃的妻子爱丽丝可以尝试在网站上注册用户名bob@example.com,告诉他们用户名已经在使用,那就是对隐私的大规模侵犯。
请记住,电子邮件地址的根源在于电子邮件提供商。如果eve@example.com已知在example.com有一个帐户,就不会失去隐私,因为eve@example.com是谁没有参考点。对于使用电子邮件作为用户名的另一个系统,情况并非如此--在非电子邮件网站上使用用户名mallory@example.com的用户将与在其他网站注册的mallory@example.com相同。关于Mallory拥有的账户,有隐私需要保护。
此外,泄露用户名对攻击者也很有用。这称为用户名枚举漏洞。如果攻击者知道存在哪些用户名,则可以运行密码猜测攻击。。
作为攻击者,如果我可以使用您的登录或忘记密码页面将我的列表从10000个目标缩小到1000个目标,我会的。
它还允许攻击者通过网络钓鱼攻击系统的用户。
很容易设计一个无法执行用户枚举的系统。例如,注册和被遗忘的密码进程是相同的.
这些步骤是:
作为奖励,您已经验证了他们的电子邮件地址在注册,以防他们需要重置他们的密码在稍后的日期。任何输入都意味着用户根本无法注册--这很好,因为用户不会意外地使用注册到不同电子邮件地址的帐户。
密码和注册链接都包含加密安全的随机ID,因此如果不接收电子邮件,就无法跟踪它们。只有有权限的人才能知道用户名是否注册(鲍勃最好对爱丽丝保密他的电子邮件和笔记本电脑密码--如果爱丽丝也在同一房间里尝试这个程序,他最好关掉任何通知声音)。
有关相关主题,请参阅我的其他一些答案:
https://security.stackexchange.com/questions/88815
复制相似问题