使用电子邮件地址作为用户ID的优缺点是什么?

74

我正在创建一个需要注册/认证的Web应用程序,并考虑使用电子邮件地址作为唯一的用户ID。以下是我看到的优缺点(更新后包含回复):

优点

  1. 在注册过程中少填一个字段(只需输入电子邮件地址、密码和确认密码)。我非常喜欢极简注册。

  2. 电子邮件地址更容易记住。(感谢MitchJeremy

  3. 您不必担心您喜欢的用户名已被占用 - 您是唯一使用您的电子邮件地址的人。(感谢TStamper

缺点

  1. 用户每次登录时需要输入更多内容。

  2. 如果用户想要多个账号怎么办?他们需要另一个电子邮件地址。(我是否希望用户能够创建多个帐户?)

  3. 如果潜在攻击者知道目标的电子邮件地址,则很容易猜到登录ID。(感谢Vasil

  4. 用户可能会倾向于使用他们用于电子邮件帐户的相同密码,这是不安全的。(感谢Thomas

  5. 如果您经常更改电子邮件地址,则可能难以记住长时间停顿后您用于注册网站的地址。(感谢Software Monkey

  • 黑客可以通过垃圾注册并利用“电子邮件已被使用”的回应来生成有效电子邮件列表。(感谢David)

  • 并非每个人都有电子邮件地址。(感谢Nicholas)

  • 如果我使用电子邮件作为ID,我会提供一种机制,允许在用户更改地址时更改它。在这种情况下,用户不会向公共网站发布内容,因此不需要单独的用户名来保护电子邮件地址(但这是考虑其他网站时需要考虑的一些事项)。

    另一个选择是实施OpenID(这是另一个争论话题)。

    这似乎对Google有用,但他们的服务紧密集成。在我的分析中,我错过了什么?你有任何建议吗?有人有经验分享吗?

    最终编辑

    感谢大家的回复。我决定使用电子邮件作为ID,然后允许在注册后创建用户名以用于登录。这样可以在保持注册尽可能简短的同时提供一些灵活性。它还可以防止用户更改电子邮件地址时出现问题(他们只需使用用户名登录并更新即可)。我还将实施方法来防止从注册和登录系统中强制执行电子邮件地址的攻击(主要是在重复尝试后冷却一段时间)。


    1
    你的第一个 PRO 并不是在所有情况下都正确,因为用户在你的网站上发布内容仍然需要用户名。 - Sandor Davidhazi
    你应该编辑你的问题,列出回答中的优缺点简表。 - Lawrence Dol
    ID/密码组合不正确。请重试或重置您的密码。无论您使用哪种方法,请记得在“重置密码”页面中使用一些反爬虫措施。 - Francisco Presencia
    16个回答

    2
    坚持使用电子邮件地址,因为它们在各个地方被广泛使用,实际上大多数主要的网站都使用它们,它们是独一无二的,所以用户不必费力去寻找那些没有被别人使用过的名字,而且用户不会忘记他们的电子邮件地址(至少大多数情况下不会 :)),这与用户名不同,如果他们不经常访问您的网站,他们将一直忘记它们。
    您不必担心它们太长,因为所有主要的浏览器(IE、FF等)都默认启用了表单自动完成功能,所以您只需输入电子邮件的前几个字母,就会出现一个下拉列表(即自动完成列表),您只需点击即可输入整个电子邮件。个人来说,我几乎从不完整输入电子邮件地址,我总是键入前几个字母,然后从自动完成下拉列表中选择电子邮件。此外,如果允许用户通过“记住我”复选框和持久性 cookie 被记住,这将是另一个无需担心的原因。
    我不知道您的应用程序如何,但通常在大多数应用程序中,用户拥有多个帐户是不可取的。

    1
    为了解决您在每次输入电子邮件时字符过长的问题,我已经实现了StringScan Ruby库。
    require 'strscan'    
    def signup!(user, &block)    
    self.email = user[:email] unless user[:email].blank?    
    str = StringScanner.new(self.email)    
    str.scan_until(/@/)    
    str.pre_match    
    self.login = str.pre_match
    

    等等..

    然后只需更改登录方法,允许使用电子邮件或用户名匹配密码。

    这就像谷歌或MobileMe一样。用户可以选择只输入他们的电子邮件用户名(即用户名而不是username@gmail.com)。


    1

    其中一个缺点可能是,如果它是一个电子邮件地址,登录名可以被人猜测并尝试暴力攻击。这并不是一个大问题,因为在今天的大多数网站上,登录名都是公开显示的。

    最大的优点是通过这种方式登录更容易记住。


    1
    一个好的设置是要求用户名和电子邮件。允许用户使用电子邮件地址或用户名登录非常用户友好。另一个好处是用户可以更改他们的电子邮件地址。这也将允许一个电子邮件有多个账户。

    1

    我正在努力解决这个问题。以下是当前时代的一个较新的缺点。

    在许多政府看来,电子邮件地址被视为个人识别信息(PII)。因此,每当你在页面上显示它或从终端返回它时,都需要额外小心。

    考虑到许多网站允许不同用户之间进行交互。这通常意味着网站会提供一个用户列表供选择(例如下拉列表或搜索结果)。这实际上可以通过网站泄露PII。

    另一方面,用户名可以完全匿名。考虑到密码管理器的普及,用户真的不需要记住他们的用户名和密码。


    0

    如果您不介意强制用户使用Facebook或其他社交网络登录您的应用程序(大多数人似乎并不在意),那么在引用其他表格/文档(MySQL,Mongo等)时,您可以使用他们的社交网络电子邮件作为他们的“用户ID”。

    我注意到使用社交媒体登录的好处是,所有安全性都由该社交网络处理,包括不允许两个用户在其数据库中具有相同的电子邮件或用户名,从而节省了您编写所有这些代码的麻烦。 这只是我的个人偏好。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接