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

时间:2009-03-15 02:45:13

标签: email authentication registration

我正在创建一个需要注册/身份验证的网络应用,我正在考虑使用电子邮件地址作为唯一的用户ID。以下是我认为的优点和缺点(更新后的回复):

赞成

  1. 在注册期间填写一个较少的字段(它只是电子邮件地址,密码和验证密码)。我是简约登记的忠实粉丝。

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

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

  4. CONS

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

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

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

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

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

    6. 黑客可以通过垃圾邮件发送注册表单并使用“已发送电子邮件”回复来生成有效电子邮件列表。 (感谢David

    7. 不是每个人都有电子邮件地址。 (感谢Nicholas

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

      另一种选择是实施OpenID(这是另一个辩论)。

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

      最终编辑

      谢谢大家的回复。我已决定使用电子邮件作为ID,但在注册后允许创建用于登录的用户名。这允许一点灵活性,同时保持尽可能短的注册。它还可以防止用户更改电子邮件地址时出现问题(他们只需使用用户名登录并进行更新)。我还将实施一些方法来防止电子邮件地址暴露在注册和登录系统之外(主要是反复尝试后的冷却期)。

15 个答案:

答案 0 :(得分:31)

就个人而言,我更喜欢使用我的电子邮件地址作为用户名。记住这个问题要少一些,我也不必担心我的名字已被采用了。

只需2美分!

答案 1 :(得分:25)

我认为你错过了PRO:

用户可能会记住他们的电子邮件地址;由于电子邮件地址是唯一的,因此他们永远不必担心他们的首选用户名已被占用。

答案 2 :(得分:12)

<强> CONS

  1. 当电子邮件帐户使用相同的密码时,自动妥协该密码意味着另一个密码泄露。

答案 3 :(得分:11)

作为网站的用户,我可以告诉你,我讨厌记住不必要的用户名。我没有使用独特的手柄或任何东西,所以我永远不会记得我用过的名字的哪个变种尚未被采用。我更愿意输入我的电子邮件地址。

另外,我喜欢OpenID。

答案 4 :(得分:11)

CON:并非所有人都有电子邮件地址。考虑您的数据库是否曾被内部应用程序访问过。如果您正在经营商店,人们打电话并通过电话下订单并拒绝提供电子邮件地址。因此,虽然将电子邮件地址作为默认用户ID很酷,但请确保允许替代方案进入系统。 (当然,这取决于具体情况。)

艰难地学习了这一点。

答案 5 :(得分:4)

我倾向于不喜欢pro / con列表,而是尝试考虑好处和挑战。

挑战:

有些用户会想要使用他们的ISP提供的电子邮件地址。如果用户在更改ISP之前忘记在他们已注册的所有网站上更新其电子邮件,则可能很难单独链接到电子邮件。

相反:

您应该考虑允许用户提供多个地址以及用户选择的ID,然后让用户决定他们希望做什么。也许还考虑允许用户提供OpenID帐户。

答案 6 :(得分:3)

您可能需要考虑的一个设置:同时拥有用户名和电子邮件。电子邮件用于登录并始终保密,用户名用于在任何公共交互中识别用户,例如发布评论。由于用户登录凭据的两半都保密,因此它会稍微安全一些,而如果您使用用户名进行登录和公共识别,则登录的一半已经知道。

我绝对同意你在大多数情况下进行最低限度的注册,但根据你正在做的事情,你可能希望平衡这一点,以增加用户的安全性。四个字段对于注册而言并不令人愤慨(用户名,电子邮件,密码,确认密码),如果您感觉特别冒险,可以通过删除确认密码字段将其减少到三个,或者通过向他们发送密码将其减少到两个他们以后可以改变。

答案 7 :(得分:2)

<强> PRO

人们讨厌创建一个符合其身份且尚未注册网站的唯一名称。这就是为什么用户身份 EMAIL ADDRESS 如此受欢迎。

:TStamper1930,实际上想要记住我名字末尾的1930年我真的想要

答案 8 :(得分:2)

CON:如果黑客可以尝试整体注册随机电子邮件地址,他或她将能够根据哪些注册失败来确定哪些地址有效。这是一种可用于汇总已知有效电子邮件地址列表的策略,这些地址是垃圾邮件黑市上的热门商品。

虽然我现在考虑过这个问题,但这会影响任何要求在注册过程中提供电子邮件地址的网站,无论是否有单独的用户名。但它仍然需要考虑。

答案 9 :(得分:2)

CON:如果我更改了我的电子邮件地址,我的帐户名称突然无效。我的名字没有改变,但我的电子邮件经常这样做。几年后我偶尔会重新访问一个网站,并被卡住了......两年前我的电子邮件地址是什么???

答案 10 :(得分:2)

坚持使用它们在任何地方使用的电子邮件地址,实际上大多数主要网站都使用它们,它们是独一无二的,因此它们可以避免用户难以找到其他人不使用的名称,用户也不会忘记他们的电子邮件地址(在大多数情况下至少:)),这与用户名不同,如果他们不经常访问您的网站,他们将继续忘记。

你不应该担心它们太长,因为所有主流浏览器(IE,FF等)都提供默认启用的表单自动完成功能,所以你输入电子邮件中的第一个字母就可以了下拉列表(即自动完成列表),您只需单击以输入整个电子邮件,我个人几乎从不输入完整的电子邮件地址,我总是键入第一个字母,然后从自动完成下拉列表中选择电子邮件。此外,如果您允许用户被记住(使用“记住我”复选框和持久性cookie),那么另一个原因就是不用担心它。

我不了解您的应用,但通常在大多数应用中都不希望拥有多个帐户的用户。

答案 11 :(得分:1)

一个可能是如果它是一个电子邮件地址,那么人们可能会猜到登录,并尝试进行暴力攻击。这不是一个大问题,因为在今天的大多数网站上都会公开显示登录信息。

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

答案 12 :(得分:1)

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

答案 13 :(得分: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

等。

然后只需更改登录方式即可允许电子邮件或登录密码匹配。

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

答案 14 :(得分:0)

如果您不关心强迫您的用户使用Facebook或其他社交网络登录您的应用程序(大多数人似乎并不关心),那么您只需将他们的社交网络电子邮件用作他们的用户ID&#39;引用其他表/文档(MySQL,Mongo等)时。

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