电子邮件密码重置 - 在之前或之后验证会员身份?

Email password reset - validate membership before or after?

流程是这样的。

  1. 如果登录失败 5 次,他们需要重设密码并被发送到密码重设页面。
  2. 用户输入电子邮件地址
  3. Link 发送到提供的电子邮件地址。记录令牌、电子邮件和时间。
  4. 返回站点,如果令牌有效,则检查数据库以查找电子邮件地址是否为实际成员。
  5. 如果他们是会员,则密码重置将继续,否则他们将陷入死胡同。

但是在收到这封信后,我想知道在发送电子邮件之前是否应该检查电子邮件地址是否与实际会员帐户相关联。

所以这是我的问题,我应该在他们 return 到网站之前和之后验证还是刚刚验证就足够了?影响?

编辑: 如果您不是电子邮件帐户提供者:

在发送电子邮件之前,您应该明确检查电子邮件地址是否有效。您发送的令牌也应始终与实际帐户相关联。否则可以更改您想要的任何帐户的密码。所以我的建议是:

  1. 用户输入电子邮件地址
  2. 后端会检查该电子邮件地址是否存在(用户在创建帐户时已告知您)。如果是,则生成一个令牌并将该令牌与帐户相关联。如果没有,死胡同。
  3. 将令牌发送到电子邮件地址。用户可以单击它,验证他是该电子邮件地址(以及该帐户)的所有者,并且能够更改他的密码。

如果您作为电子邮件帐户提供商,您可以将令牌发送到用户在注册帐户时告诉您的第二个电子邮件地址。更好的解决方案是通过短信或邮件向他发送令牌。

  • 用户提交多次不正确的登录数据...

不要做假设

如果 password 是错误的或者它实际上是 username,你不应该 而不是 做出假设 - 你也不应该通知用户确切的错误(出于安全原因。不要。)。

让用户弄明白:

Username or Password are incorrect.
Need help?
I forgot my username I forgot my password

  • 如果点击以上其中一项(弹出这个:)

Your email: _________________ Send me a [password/username] reset link

  • 如果提交的电子邮件确实存在,请检查数据库!
    (甚至不要考虑将重置 link 发送到不在您的注册表中的电子邮件!)
  • 电子邮件存在?在数据库中为该帐户创建 重置记录 并将重置 link 发送到您用户的电子邮件。
  • 邮箱不存在?谁在乎!出于安全原因,您应该显示相同的成功消息! (你不想让恶意用户玩猜谜游戏吗?由你决定。)

You should shortly receive an email with a Reset Link to [theEnteredEmail].
Didn't get any Reset Email? Resend

(可选)此时不要锁定帐户。保持可访问性。如果您有 活动重置记录 ,您可能希望在用户使用 "old" 数据成功访问其个人资料时将其删除。用户可能会感到疲倦或只是有点衰老,他可能会稍微记住他的帐户数据 - 并且可能不想重置任何东西,并且可能想要忽略 Reset-Link 电子邮件。

密码尝试失败

宽限时间 Lock/secure 帐户 仅当您注意到大量连续失败尝试时。创建该特定案例的数据库日志。
如果 username 在您的数据库中存在 ,但 密码不正确 → 向相应的用户个人资料电子邮件发送离散通知 你从日志中收集的所有数据

Hi [user], the [day/time] we registered [n] failed Login attempts to your account:
[logFile]
(n severity=high) We secured/locked your account. Please follow this link to unlock your profile. [unlockProfileLink]
(n severity=low) To make your account more secure use a strong password (Here you can suggest a rest password link)


用户真的很老,

打开他的电子邮件并进行重置Link:

  • 检查引荐重置-Link 是否对该帐户仍然有效。
  • 有效吗?创建临时会话

(您应该能够从与该帐户的 "opened" 过期 相关联的引用 URL link 中识别用户帐户重置记录 token)

Hi [user]
Your new [username/password]: _____________
Repeat [username/password]:     _____________ UPDATE [username/password]

  • 提交时检查临时会话或令牌是否未过期两个字段是否匹配
  • 如果推荐人匹配与帐户关联的临时 重置记录(令牌)- 更改 password/or/username

  • 成功了吗? 用户仍然必须从登录页面正确登录!

Your [username/password] is now updated. You'll receive shortly a confirmation email.

Login:
Username: _________
Password:  _________ LOGIN

  • 成功了吗? 验证登录会话
  • 失败?从上面重复:)