我目前正在完成一个网站,用户需要创建一个个人帐户才能玩托管在同一网站上的游戏。我目前难以弄清楚的是如何在忘记密码的情况下为用户实施安全密码重置功能。
这是目前实施的流程:
第 1 步:用户点击网站上的“忘记密码”链接。
第 2 步:用户进入表单并在发送电子邮件之前输入电子邮件地址两次。
第 3 步:电子邮件包含指向另一个表单的链接,用户可以在该表单中输入两次新密码以进行确认。输入第二种形式后,系统将一条新记录插入到数据库中的我的 Recover_Password 表中,该表包含“id”、“token”、“created_at”和“expires_at”列。
这是链接 -> (mywebsitename).com/form?id=99999&token=
其中“id”是用户的 id,“token”是从do_hash($id . date('Y-m-d'))
第 4 步生成的:用户完成表单并被带到登录页面。系统从数据库中清除令牌记录,并从用户表中更新用户的当前密码。
另外我想知道如果用户在第二种表单中尝试刷新浏览器页面该怎么办。我目前只允许在 get 参数中有 id 和 token 值并且它们都存在于数据库中的情况下访问该页面。
我在整个网站上使用 Codeigniter,需要知道这是否是一种安全的方法,以及我应该如何处理令牌和数据库。谢谢!!