创建帐户然后验证(或验证然后创建帐户)

时间:2011-02-15 15:30:04

标签: php security user-accounts

我在网上看到的大多数示例按以下顺序创建用户帐户:用户访问网站,他们选择用户名和密码并输入他们的电子邮件。发送到此电子邮件的确认电子邮件,如果他们点击该链接,该帐户就会被“验证”。如果他们不验证,帐户会在一段时间后被删除。

我被告知另一种方式:让用户先验证电子邮件,当他们点击电子邮件中的验证链接时,他们就可以开始创建用户名和密码了。

有没有人看到第二种方式有任何问题,无论是安全问题还是其他问题?这并不常见,我个人无法找到一个完全明显的问题,但我更愿意只在很多人确认他们没有看到问题或漏洞之后才使用它。

12 个答案:

答案 0 :(得分:15)

就我个人而言,我确实看到了一个可能给用户带来不便的问题:

当大多数人在网站上注册时,他们希望他们必须回答相当多的问题,花些时间阅读常见问题解答和服务条款,然后花更多时间设置他们个人资料的一些初步方面

传统流程允许用户选择完成该过程的时间。之后,用户只会收到一个验证链接,通常是一个3秒的过程,几乎可以在任何时间完成。

您建议的流程会强制您网站的潜在用户花时间阅读您的文档,然后等待直到他们收到消息并然后找到一些更多< / em>时间,可能在几天后填写表格。举个例子,我会发现至少有点烦人 - 如果不是彻头彻尾的沮丧 - 特别是如果邮件花了很多时间才能到达,因为它通常必然会这样做。

我也不喜欢这种方案的固有含义:

  • 传统流程:“哦,很好,您填写了我们的表格,只需给我们一个地址,以便向您发送正确的验证”。这里的用户只是在等待完成本质上已完成的交易。

  • 邮件优先流程:“哦,这是。好吧,等一会儿,如果我们需要你,我们会发送邀请”。另一方面,在这里,用户处于潜意识不确定性的边缘,直到他们收到您的消息。

我相信第一种方法对用户来说更加开放和友好。这也是这些案例的当前标准流程,这应该足以激励他们自己使用 - 你应该避免强迫你的用户进入他们不习惯的流程,除非没有其他方式

答案 1 :(得分:4)

从带有邀请链接的朋友那里获取电子邮件以访问网站令人兴奋 - 它感觉独特,新颖而有趣。我得到了一些东西 - 所以我很乐意报名参加。

为了开始使用网站,要求输入电子邮件地址会让人觉得严苛,限制性和烦人。我被要求放弃第一步然后可能(也许?)获得一些有价值的东西。

这不符合逻辑 - 在这两种情况下,必须先验证我的电子邮件地址,然后才能创建帐户。事实上,第一个案例要求我的朋友积极向我提出我从未要求的提议。

你知道为什么我第一次创建这个StackOverflow帐户吗?因为当我想提供答案时,我可以点击登录页面上的Google徽标并立即开始使用该网站。没有用户名,密码,名字,姓氏,DOB或其他B.S。

您知道为什么我从未创建过Expert Exchange帐户吗?因为我第一次尝试访问答案时,系统会提示您输入信用卡号,帐单邮寄地址和电话号码。 在我甚至可以对该网站提供的内容进行抽样之前,我不得不放弃一些东西。

关键在于:进入障碍会使您的网站陷入困境。创建帐户应尽可能无缝且无痛。能够在填写单页注册表单和CAPTCHA后立即访问网站非常棒,即使在完成电子邮件验证之前限制访问其他功能也是如此。也许我会告诉你我的DOB和喜欢的颜色,如果它解锁更多的功能。

答案 2 :(得分:3)

我个人认为没有问题 - 这是一个选择问题。我认为关键点是让用户明白他们必须

1)输入他们的电子邮件地址 2)等待确认电子邮件,然后才能进入第3步 3)注册帐户。

如果用户只需输入一条信息(他们的电子邮件地址),然后填写您需要的其他信息,就可能会删除用户持有的数据量和投入的时间。

就个人而言,我会保持标准,以免用户感到困惑。工作量相同 - 获取用户名/密码/电子邮件地址 - 等待用户点击链接后才能登录您的网站。

答案 3 :(得分:3)

那么您允许在电子邮件中使用链接发送多少次?

如果只有一次,用户在选择用户名之前关闭浏览器就无法创建帐户。

如果多次,很多人可以使用相同的链接创建帐户。发布此链接并使用密码恢复功能可能是很好的网络钓鱼技巧。

如果您在数据库中检查此电子邮件并仅允许一次,则用户将无法创建两个合法帐户。

答案 4 :(得分:2)

我可以看到此方法略微更简单 - 当用户点击其电子邮件中的验证链接时,您将它们发送到插入了隐藏的预生成ID号的表单,然后分配一个之后的用户名和密码。只有id和id而没有其他信息的空白帐户很容易定期过滤掉,并且在成功创建帐户之前,您不会存储任何详细信息。

然而,大多数网站在发送电子邮件之前收集用户名和密码可能是有原因的 - 在您要求提供更多个人信息之前,您将获得用户投资。帐户已创建 - 现在只需验证您的电子邮件。另一种方式是首先要求一个电子邮件地址,然后是一个帐户 - 尽管功能上它是相同的,但感觉不是。此外,标准“流程”的优势在于用户知道会发生什么 - 遵循惯例意味着用户感觉他们知道发生了什么,不会感到困惑或失去兴趣。

答案 5 :(得分:0)

我想分享一些关于第二种方法的想法。

首先,它与邀请系统非常相似,但它不一样。

  1. 您必须允许为单个电子邮件地址发送多个注册请求。如果你不这样做 - 潜在用户可能会意外删除它,并且无法重复该过程。如果你允许一些愤怒的家伙可能使用它作为垃圾邮件工具(尽可能多的邮件发送到一个(甚至更多)电子邮件地址。想象一下,你如何公司/网站寻找一个获得10k注册请求的人。 ..

  2. 标准方式有一个重要的优点:它允许用户名保留而无需确认电子邮件(用户可能想要注册,但不希望或无法访问电子邮件服务器/帐户)。 / p>

  3. 您必须考虑您的服务器可能会延迟电子邮件发送很长时间。可能的原因:内存不足,DoS攻击,电子邮件服务器故障等。如果您选择邮件第一种方法并且用户在5分钟内没有收到该邮件(由于任何原因),4个潜在用户中的3个将为您提供公司/站点并且永远不会完成注册。

  4. 有一个原因,它被称为标准方式,因为考虑了许多小细节。

答案 6 :(得分:0)

这两种方法都可以 - 但是如果您要推迟创建帐户,那么您将不得不将所有必需的详细信息嵌入到URL中 - 到期日期,用户名,密码和电子邮件地址,然后对其进行加密所有这些都是为了防止篡改 - 这使它变得相当大。

实际上 - 您无法允许用户选择自己的用户名 - 因为您无法检查用户名是否先前已被请求过且未经过验证。如果您要发布用户名,那么您将发布电子邮件地址.....这不是一个好主意吗?

答案 7 :(得分:0)

这是我对这种方法的关注。

电子邮件投放无法保证,而且速度很慢。如果用户没有立即收到电子邮件,他们可能无法完成注册过程。如果他们输入错误的电子邮件地址或电子邮件被标记为垃圾邮件怎么办?

答案 8 :(得分:0)

根据我的经验,记录尝试注册网站的用户总是更好。

问题在于,用户通常不会收到确认电子邮件。

当发生这种情况时,他们经常忘记网站而不会回来。

我所做的是在一段时间后重试发送确认电子邮件,比如一周。他们经常会收到第二封电子邮件,但最终会找回原本会丢失的注册用户。

事实上,我每周重试发送一次确认电子邮件,直到用户确认或自注册尝试起30天后才通过。

即使用户在30天后未确认,我也不会删除该帐户。用户通常会再次尝试注册。然后我再次再次向他发送帐户确认,并鼓励用户在没有再次获取的情况下联系该网站。

所有这些都是为了最大限度地恢复注册用户的机会,否则可能会丢失。

答案 9 :(得分:0)

我会建议第二种选择。让用户通过单击其电子邮件中的链接来验证自己。然后他们可以选择他们的首选用户名和密码。我希望用户名在网站中是唯一的。

在某些用户忘记长时间验证其电子邮件中的链接并因此锁定其用户名的情况下,这将会很有帮助。其他人不能选择那些用户名(直到稍后删除该记录)。此外,这可以消除垃圾邮件发送者选择他们自己的用户名并将其锁定以供其他人使用。

因此我建议选择第二种方案。让用户在选择用户名并将其锁定以供其他人使用之前,首先验证他的电子邮件及其存在。

答案 10 :(得分:0)

实际上有些网站会这样做。

  • 您输入邮件
  • 你得到了 初始验证邮件 密码和验证链接
  • 点击您的帐户所在的链接后 活跃的你被引导到一个表格 其他细节(全名等) 但是你可以跳过它们并填充它们 将来的任何时候。

这个最小的注册流程将帮助您避免潜在客户的流失,他们不想在填写多种表格并提供真正需要之前提供数据。

答案 11 :(得分:0)

归结为用户的便利性。如果他们检查他们的电子邮件的唯一原因是验证帐户,那么看起来似乎很不方便。而是让系统为他们生成密码,通过电子邮件发送给他们,并指示他们检查他们的电子邮件以获取他们的密码。您可以允许他们在登录后更改密码(如果需要)。这种方法也有助于确保最初的“强”密码。