【问题标题】:What are the pros and cons of using an email address as a user id?使用电子邮件地址作为用户 ID 的优缺点是什么?
【发布时间】:2010-10-13 10:16:25
【问题描述】:

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

优点

  1. 在注册过程中需要填写的字段更少(只需电子邮件地址、密码和验证密码)。我是极简注册的忠实粉丝。

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

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

缺点

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

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

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

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

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

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

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

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

另一种选择是实施 OpenID(这是另一回事)。

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

最终编辑

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

【问题讨论】:

  • 您的第一个 PRO 并非在所有情况下都是正确的,因为您的用户仍然需要用户名才能在您的网站上发布内容。
  • 您应该使用答案中的赞成/反对短名单来编辑您的问题。
  • @vamin:如果回答对您有帮助,请接受。谢谢
  • 或者您只能显示“ID/密码组合不正确。请重试或重置您的密码。”无论您使用哪种方法,请记住在蜘蛛的“重置密码”页面中也使用一些对策。

标签: email authentication registration


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我认为你错过了一个专业人士:

    用户可能会记住他们的电子邮件地址;并且由于电子邮件地址是独一无二的,他们永远不必担心他们的首选用户名已经被盗用了。

    【讨论】:

      【解决方案3】:

      解决您的电子邮件太长而无法每次都输入的问题。我已经实现了 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。)

      【讨论】:

        【解决方案4】:

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

        我绝对同意您的观点,即在大多数情况下注册最少,但根据您的操作,您可能希望平衡这与为您的用户增加的安全性。四个字段对于注册来说并不过分(用户名、电子邮件、密码、确认密码),如果您感觉特别喜欢冒险,您可以通过删除确认密码字段将其减少到三个,或者通过电子邮件发送密码将其减少到两个他们以后可以更改。

        【讨论】:

        • 您所指的用户名通常称为 显示名称 我认为。
        【解决方案5】:

        CON:不是每个人都有电子邮件地址。考虑一下您的数据库是否曾经被内部应用程序访问过。如果您经营一家商店,人们会打电话下订单并拒绝提供电子邮件地址。因此,虽然将电子邮件地址作为默认用户 ID 很酷,但请确保允许其他人进入系统。 (当然,这取决于上下文。)

        这是一个艰难的学习过程。

        【讨论】:

        • 显然您的回答与电子商务网站有关,对于大多数其他网站,您通常会要求用户验证或确认他们的帐户,方法是向他们的电子邮件地址发送一条带有激活帐户链接的消息, 无论如何都需要一个电子邮件地址
        • 我们经营一个电子商务网站,我们通过电话向 >@> 注册人员。 99.9% 的人都有电子邮件,所以这不是我们必须经常做的事情,但它确实有效。
        【解决方案6】:

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

        您不必担心它们太长,因为所有主要浏览器(IE、FF .. 等)都为默认启用的表单提供自动完成功能,因此您输入电子邮件中的第一个字母并获得下拉列表(即自动完成列表),您只需单击即可输入整个电子邮件,就个人而言,我几乎从不完整输入电子邮件地址,我总是输入第一个字母,然后从自动完成下拉列表中选择电子邮件。此外,如果您允许记住用户(使用记住我复选框和持久性 cookie),这将是另一个不用担心的理由。

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            我倾向于不喜欢赞成/反对列表,而是尝试考虑好处和挑战。

            挑战:

            有些用户会倾向于使用他们的 ISP 提供的电子邮件地址。对于在更改 ISP 之前忘记在他们注册的所有网站中更新电子邮件的用户来说,单独链接到电子邮件可能会很困难。

            改为:

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

            【讨论】:

              【解决方案9】:

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

              【讨论】:

              • 十多年来,我一直使用同一个主电子邮件地址,而这已经从我使用了 7 年的一个转换而来。我想我处于极端,但人们真的那么频繁地改变他们的吗?
              • @Fred:是的,在我获得自己的域名之前,我的电子邮件与我的互联网提供商绑定(我不喜欢 HotMail 之类的服务),所以这些年来它改变了好几次,因为我将提供商从拨号改为 DSL 再改为 WiFi。
              • 我仍然不认为更改电子邮件是大多数用户经常遇到的情况。但我在这个 CON 上看到了一点:如果是这样,你就没有其他登录方式了。但是,如果我错了,请纠正我,即使您使用用户名(而不是),并且您忘记了密码,该密码找回链接也会发送到您(两年前)的电子邮件中。而且您仍然无法登录。因此,据我所知,您的帖子似乎可以应用于这两种情况,底线是:“如果您丢失了电子邮件,或者忘记了您的电子邮件,您可能在网站上登录时遇到问题,无论登录系统”。
              【解决方案10】:

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

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

              【讨论】:

              • 应该设置一个网站来检测这种恶意尝试并将其列入黑名单。
              • 同一个人可以尝试发送到随机地址(您说他们无论如何都会生成),然后查看哪些被发送,哪些没有发送。这比尝试浏览网站更容易。
              • 您的网站不应该让用户知道电子邮件是否已经注册。
              • @Tommy 这是个好主意。如果有人尝试使用已在使用的电子邮件地址进行注册,Web 服务可以简单地回复“谢谢。确认电子邮件已发送至...”。然后在那封确认电子邮件中,可能会有一条消息:“您已经拥有我们的帐户。如果您忘记了密码,...” — 哦,我刚刚注意到这正是我正在使用的第 3 方身份验证库是如何工作的 :-)
              【解决方案11】:

              专业版

              人们讨厌必须创建一个与他们的 id 相匹配的唯一名称,并且该名称尚未被用于注册网站。这就是为什么用户 id 作为 EMAIL ADDRESS 如此受欢迎的原因。

              ex:TStamper1930,他真的想在我真正想要的名字末尾记住1930

              【讨论】:

                【解决方案12】:

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

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

                【讨论】:

                  【解决方案13】:

                  缺点

                  1. 当电子邮件帐户使用相同的密码时,自动破坏一个密码就意味着破坏另一个。

                  【讨论】:

                  • 这是一个需要提升的问题。每个人都应为其电子邮件帐户使用唯一的密码。
                  • 他们应该,但他们没有。悲伤但真实。
                  • 使用这种方法没有问题。这对用户来说是个问题。所以我不会认为这是一个骗局。
                  • 如果您的电子邮件密码被泄露,您就会遇到很多麻烦,这是您的问题,而不是我的问题(作为使用电子邮件登录的网站的管理员)。
                  • 当电子邮件与帐户相关联时,这通常是正确的,而不仅仅是当电子邮件用作登录时。如果您控制帐​​户注册时使用的电子邮件,大多数服务都会提供重置密码的方法。
                  【解决方案14】:

                  就个人而言,我更喜欢只使用我的电子邮件地址作为用户名。少了一件需要记住的事情,而且我永远不必担心我的首选名字已经被占用了。

                  只要我的 2 美分!

                  【讨论】:

                    【解决方案15】:

                    作为网站用户,我可以告诉您,我讨厌记住不必要的用户名。我不使用独特的句柄或任何东西,所以我永远记不起我使用的我名字的哪个变体还没有被使用。我更愿意输入我的电子邮件地址。

                    另外,我喜欢 OpenID。

                    【讨论】:

                    • 您是网站用户? ;)
                    • 我的用户名比电子邮件地址少得多。
                    猜你喜欢
                    • 2010-11-21
                    • 2012-12-09
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-05-08
                    • 1970-01-01
                    • 1970-01-01
                    • 2021-06-05
                    相关资源
                    最近更新 更多