更正拼写错误的用户名并提示用户输入有效的用户名是否会带来安全风险?

我最近尝试登录Facebook,并拼写了我的电子邮件。他们通过以下消息提示我。


以{username}登录

{email}@gmail.com·不是您?

请确认密码好像您输入了您的电子邮件或用户名的轻微拼写错误
。我们已为您纠正了该错误,但请
重新输入密码以增强安全性。


我知道用户名并不是真正的秘密,但是当一个网站将拼写错误修正为正确的拼写,他们似乎把“不是秘密”弄得太远了。

评论

仅在不公开创建帐户的服务(例如,在Intranet登录的情况下)上,才允许在登录功能中检查现有的用户名。当用户可以注册时,他们可以使用注册功能检查用户名的可用性。话虽如此,限制登录尝试仍然是一个好主意,但这是另一回事了。

@Jacco:并非总是如此,这取决于实现注册功能的方式。请参阅此处以获取安全的解决方案,该解决方案不会使您的网站容易受到用户枚举的攻击。但是,您是正确的。可以合理地确定用户拥有帐户的公共站点和非常受欢迎的站点,用户枚举并不是真正的问题。

@SilverlightFox,有趣的中间解决方案。我认为可用性的含义并不适合大多数公共网站,但是对于某些公共网站来说,它可能是一个选择。

相关的Facebook密码小写和大写

实际上,我更担心的是,它比您使用任意用户名时更容易检查您的电子邮件地址。电子邮件地址是个人身份信息:它不仅告诉您帐户“ catsAndDogs42”已经存在;它告诉您该特定电子邮件地址的所有者在网站上拥有一个帐户。如果该网站不如Facebook那么精美(并且无处不在),那么我不希望我公开拥有我的帐户,尤其是像firstname.lastname@example.com这样的电子邮件。

#1 楼

如您所说,您在Facebook上看到了此内容-因此我尝试了以下步骤:


使用lukas@gmail.com和真实密码登录->可以使用
使用lukas @ gmail登录.cmo和真实密码->也可以(!)
使用luksa@gmail.com和真实密码登录->也可以使用
使用luksa@mail.com和真实密码登录>也可以使用
使用lukas@gmail.cmo和错误的密码登录->输入错误的密码,但电子邮件会自动更正为正确的电子邮件
在私有选项卡中(或使用已清除缓存的浏览器& Cookies)->“您输入的电子邮件与任何帐户都不匹配”

由于仅当我已经在此PC上成功登录FB时,该校正才有效,不是Facebook中的漏洞。


编辑:添加了新的测试用例;感谢Zymus,simbabque和Micheal Johnson的建议

评论


评论不作进一步讨论;此对话已移至聊天。

–Rory Alsop♦
16年5月13日在10:32

存档聊天的共识是,这是基于登录cookie的客户端更正。 Facebook没有运行服务器端检测算法。

– Liilienthal
16年5月13日在12:12

#2 楼

对于大多数网站而言,允许用户名或电子邮件迭代可能是一个安全问题,但对于Facebook而言则不是。对于像Facebook这样的大型网站,查找具有帐户的电子邮件很容易,因为这些网站拥有大量用户。这适用于其他庞大的用户数据库,例如Google和Microsoft。这些公司只是要面对用户名/电子邮件数据库(一定是众所周知的)的安全性。

话虽如此,如果这是您第一次使用Facebook,我会感到惊讶使用相同的浏览器,计算机甚至IP地址。对于他们来说,填写用户名完全没有意义,因为任何看似电子邮件的字符串都可能接近一个或多个用户。我怀疑Facebook有某种了解您的方式。

评论


根据卢卡斯的回答,您在第二段中的假设似乎是正确的。

– TTT
16年5月10日在14:21



我不确定我是否遵循你的第一段。为什么拥有大量用户会减少“电子邮件迭代”的安全性问题?他们用来确定是否应进行电子邮件迭代的方法(例如,您以前是否使用此浏览器或计算机登录过),也可以由较小的站点来完成,不是吗?如果是这样,它是否同样安全?

– TTT
16年5月10日在14:27

@TTT-并不是说电子邮件迭代不再是问题,只是防止电子邮件迭代基本上是不可能的。对于Facebook,任何个人电子邮件列表都是相当不错的Facebook电子邮件地址列表。尽管迭代仍然是一个问题,但它们并不是真正可以防止的事情。因此,在权衡用户友好选项与安全性以防止电子邮件迭代时,Facebook做出了不同的决定,因为它们已经失去了电子邮件迭代之战。

–尼尔·史密斯汀(Neil Smithline)
16年5月10日在14:31

#3 楼

根据您在此处提供的详细信息,我会说“是的,那是安全隐患”,因为它100%标识了谁在网站上注册。我不知道在放置一个块(CAPTCHA,IP块等)之前,请求可以提交多少次,但是攻击者可以简单地“蛮力”使用一组用户名和电子邮件来获得一个相当清晰的列表。谁在使用该网站。

照原样,系统不会告诉您输入错误的内容,而脚本可以通过比较前和后的情况很快地告诉您。

更糟的是,有了用户名和电子邮件的列表,这些是因为其他站点的目标列表是因为(我希望)人们倾向于重用用户名(例如电子邮件地址)。

看起来很可疑,恕我直言。

惊讶...会认为FB会比这更好。

评论


这是Facebook,您也可以检查facebook.com/ 是否存在。我认为这里没有增加的风险。

– Tokk
16年5月10日在13:53

我想我看到了些微的差异,因为它提供了用户名与特定电子邮件的关联。此外,FB正在更正用户名(和电子邮件),而失败的URL只是失败的URL。

– jms
16年5月10日在13:58



根据其他答案,更正似乎是基于本地存储的cookie

– schroeder♦
16年5月10日在14:36