フラスコセキュリティのパスワードリセットトークンで何が起こっているのか誰かが私を歩くことができますか?Flask-Securityのトークンベースのパスワードリセット機能の説明
https://github.com/mattupstate/flask-security/blob/develop/flask_security/recoverable.py
(他の部分までのディレクトリがあるかもしれません。)
の私の理解で何が起こっている:forgot_passwordによって定義されたルートで
- (コードはgithubの上でここにあります)ユーザーがパスワードをリセットするフォームを送信します
- "reset_password_token"が生成されます。これは、ユーザーのID +現在の(保存されている暗号化された)ユーザーのパスワードのmd5()で構成されますか?
- トークンを含むリセットパスワードアドレスにリンクが生成されます。
- このリンクは、user.emailによって指定されたアドレスに電子メールで送信されます。
- ユーザーがリンクをクリックすると、ルート(ビューで定義)に移動します。これは、reset_password(トークン)です。トークン値は、このルートへの引数です。
- ルートは、トークンが有効で有効期限が切れていないかどうかを評価します。
- この場合、このルートは新しいパスワードResetPasswordForm()を要求するフォームをレンダリングします。
これは間違いありませんか?また
:
- 上記の場合には、それはトークンが現在のパスワードの新しいMD5()を含有させることは安全である、正しいでしょうか?私はそれが独特でなければならないことを知って、逆にコストがかかるが、それでも?
- 有効期限はどこに保存されていますか?
私が最も具体的にはトークンをシリアライズするitsdangerous
モジュールを使用しているgenerate_password_reset機能reset_password_token_status(token)