【发布时间】:2012-12-04 02:18:27
【问题描述】:
有人可以告诉我烧瓶安全的密码重置令牌中发生了什么吗?代码在github上:
https://github.com/mattupstate/flask-security/blob/develop/flask_security/recoverable.py
(目录中可能还有其他部分。)
我对正在发生的事情的理解:
- 在 forgot_password() 定义的路由中,用户提交表单以重置密码
- 生成“reset_password_token”。这由用户 ID + 用户当前(存储加密)密码的 md5() 组成?
- 生成包含令牌的重置密码地址的链接。
- 此链接通过电子邮件发送到 user.email 提供的地址
- 当用户单击该链接时,他们会转到一条路线(在视图中定义),即 reset_password(token)。令牌值是此路由的参数。
- 路由评估令牌是否有效且未过期。
- 如果是这样,此路由会呈现一个表单,要求输入新密码,ResetPasswordForm()。
对吗?
还有:
- 如果以上是正确的,让令牌包含当前密码的新 md5() 是否安全?我知道它应该是独一无二的,而且逆转成本很高,但仍然如此吗?
- 到期日期存储在哪里?
generate_password_reset 函数让我特别困惑
data = [str(user.id), md5(user.password)]
return _security.reset_serializer.dumps(data)
和
get_token_status(token, 'reset', 'RESET_PASSWORD') 内部的函数reset_password_token_status(token)
【问题讨论】:
标签: python flask token password-recovery flask-extensions