[编辑:在此处被视为偏离主题并转发至https://security.stackexchange.com/questions/71657/should-email-verification-be-followed-by-password-based-login-why]
典型的帐户创建流程似乎是:
但是,我曾经读过某个地方(现在我找不到这个,这就是为什么我要问)更好的流程会修改第3步,同时要求用户使用步骤1中提供的密码登录。我认为理由是这种额外的预防措施可确保验证电子邮件地址的人与创建帐户的人员相同。
问题:上述说明是否有意义,是否应该通过要求基于密码的登录来实施电子邮件验证?
这对我来说是有道理的,至少它看起来并不有害 - 除了让用户体验稍微麻烦一点。但是我看到很多在线服务不需要这个,我想知道为什么。
例如,这是我担心的情景。如果#1人最初创建了帐户但指定了错误的电子邮件地址(恶意或意外),并将其发送给#2号人员,该怎么办?如果#2的人很天真,他/她可以通过点击链接来验证该电子邮件地址......然后忘掉它。然后#1人仍然可以使用密码登录。假设#1的人在该帐户上做了各种不好的事情。 2号人会负责吗?
我认为另一种解决方案可能是让新用户首先只指定一个电子邮件地址,然后使用哈希令牌确认,然后让他们设置密码。但我也没有看到很多在线服务以这种方式做到这一点。
答案 0 :(得分:4)
这就是我要做的事情:
创建帐户后,您可以在那里登录用户,即用户创建帐户,然后直接登录。
与此同时,您会显示一条消息或某些内容(可能不会激活用户的服务),告知用户他/她已收到一封电子邮件,其中包含用于验证和确认其帐户的链接。
当用户点击该链接时,它会要求他登录进行确认。如果它是同一个用户(我们希望它是这样),浏览器应该能够找到会话cookie,将两个和两个放在一起,将识别/识别用户的会话细节与散列链接相匹配(也标识用户)并自动确认帐户。这将确保您在更短的程序中所需的安全性。
现在,让我们看一下你担心的情景 - 用户收到他的电子邮件错误,然后发给其他人。首先,在确认电子邮件中添加“不是吗?忽略此消息”类别的注释。现在,我是天真的“别人”,即使我从未在您的网站上创建过帐户,我仍然决定点击该链接。然而,当我这样做时,我会看到一个要求我登录的页面!由于我不知道密码,我无法登录,而且由于我无法登录,我无法确认帐号!简单!
对于拼错他/她的电子邮件的用户,请在您的网站上添加一个选项,允许用户更改他/她指定的电子邮件地址。