我已经创建了一个用户登录系统。
在我忘记密码页面。我使用php电子邮件给用户。 用户将收到一封包含链接的电子邮件
链接 -
....?email=abc@gmail.com&confirm_code=uefu8878ef...
用户可以点击此链接访问reset_password页面。
然而,这是使用GET,这意味着任何人都可以检查浏览器历史记录以访问此页面并重置密码。
有什么建议吗?
答案 0 :(得分:6)
使用链接后,将确认码标记为已使用/无效,因此无法再次使用。
答案 1 :(得分:1)
如果您还要隐藏电子邮件,请生成自定义令牌以执行此操作。令牌必须是唯一的,并将其与数据库中的电子邮件地址相关联。使用时删除(或标记使用)。
答案 2 :(得分:0)
将您的确认代码保存在数据库中并在其与电子邮件地址之间建立链接并给它一段时间,以便在时间到期后过期,现在每次请求此页面时首先查看如果确认_code与这封电子邮件,如果它是检查使用时间与数据库内的时间,然后如果它没有过期标记为授权然后处理请求否则删除它记录
然后关于到期更安全我认为如果你将有效期设置为1小时,这将是有道理的。希望这会有所帮助:)