进行密码重置的“完成”方式似乎如下:
- 生成临时令牌 (
zs8Abn27
) - 将令牌与到期时间一起存储在数据库中
- 向用户发送电子邮件令牌
- 用户前往
/password_reset?t=zs8Abn27
- 根据数据库检查令牌的有效性
- 如果有效用户获得存储在您的数据库中的新密码(当然是加盐和 bcrypted)
我的问题是,如果黑客获得对您的数据库的读/写访问权限,他们是不是只能创建自己的令牌并以这种方式获得访问权限?即使他们只有读取权限,他们也可以使用他们可以看到的令牌来获得临时访问权限。
为了记录,这完全是概念性的,我只是好奇如何使这样的功能安全。