我已经使用登录过程构建了一个新的单页应用程序。首先,我使用了一个安全性问题来恢复用户的密码。与管理员设置新帐户时使用的过程相同。系统根据输入的电子邮件地址自动生成一个临时密码,并将链接发送给用户。
然后,我看到了几则强烈推荐的文章,以避免通过电子邮件发送任何类型的密码。他们提出的替代解决方案是生成临时链接。为此,他们使用tokens
。链接将具有url
参数和令牌组合。该令牌与到期日期/标志一起保存在数据库表中。用户单击forgot password
后,输入电子邮件地址,然后单击发送。这是an example of this method with PHP
首先,我用这些字段创建了表格。示例:
RecID int
Email varchar(80)
Salt varchar(32)
Token varchar(50)
Expires datetime
我不确定的一件事是PHP示例中的selector
。我的猜测是,这与Salt
类似,应该与hash()
结合使用。我的问题是我是否应该将createUUID()
与盐和令牌一起使用?这是an example from Raymond Camden。
我很好奇什么是更好的选择以及方法。如果我为用户生成一个新帐户,我是否应发送24小时有效期的链接?然后,新用户可以创建密码。还是对此有更好的选择?上面的PHP提供的解决方案也有任何缺点吗?如果有人有任何建议或更好的例子,请告诉我。