1

我有一个用例,用户注册我的服务,然后通过电子邮件确认他们的注册。我遇到的问题是我必须等到确认电子邮件才能创建帐户(这是我无法更改的外部要求),所以我必须将密码存储在某个地方,以便可以以纯文本形式检索它。

这样做的最佳方法是什么?想到的解决方案是加密并存储在redis中,直到用户进行身份验证,然后创建帐户并删除redis条目。

这是最好/最安全的方法吗?

4

1 回答 1

2

更改流程:不要预先要求密码,先做地址验证。

注册表单仅使用电子邮件地址,并通过链接向电子邮件地址发送令牌。通常是这样的:

http://.../verify?email=bob@example.com&expires=nnn&sig=xxx

其中 nnn 是一个时间戳,在此之后链接变得无用,xxx 是HMAC(serversecret, email+timestamp)这样您就可以进行身份​​验证。

点击链接可以让他们获得一个带有密码字段和任何其他详细信息的注册页面。

(奖励:如果您有忘记密码的过程,请使用相同的过程,因此点击链接可以获得注册页面或恢复帐户页面。)

于 2013-09-05T11:14:32.477 回答