2012-01-04 4 views
3

この質問は少し抽象的かもしれませんが、私はパスワード回復を実装するための最良の/標準的な方法が何であるか不思議でした。私は今すぐ自分のコードに実装しようとしていますが、私が使い始めている方法はちょっと混乱しているようですが、これを行うための "Railsの方法"が何であるか知りたかったのです。助言がありますか?Rails - Password Recovery

+0

Deviseにはほとんどのパターンが実装されています。見てみましょう。https://github.com/plataformatec/devise – clyfe

答えて

6

パスワードは、暗号化されるのではなく、一般的にはハッシュ(理想的には塩)で暗号化されていなければなりません。次に、ユーザーがパスワードを正しく入力したかどうかを確認するために、入力したものを取り出し、同じsaltおよびhash関数を使用して、データベースにあるハッシュと一致するかどうかを確認します。

このようにして保存されたパスワードは復元できません。パスワードを忘れた場合の回復について移動する標準的な方法は次のとおりです。

  1. ボブは彼の電子メールアドレス(またはユーザ名または任意)を入力し、「パスワードトークンリセット」彼は
  2. が誰であるかを示すために、一般的に長い文字列を生成しています文字と数字の組み合わせで、何らかの方法でBobに関連付けられたデータベースに格納されます。
  3. ボブは、通常、例えばURL(、http://fakesite.com/reset_password?token=long_token_generated_in_step_2に、何らかの方法で取り付けたトークンをリセットするパスワードでメールを送信されます。
  4. ボブはそのURLを訪れると、サイトはリセットトークンが有効であることを確認し、ボブが可能その後、彼は失われたパスワードと同じようにハッシュ化された/塩漬けされ新しいパスワードを選択する。

考案、Railsのための認証の宝石は、このパターンに従っRecoverable strategyを持っている。

を一部のサイトでは、追加のセキュリティチェックが適用されますce電子メールは100%安全ではありません。たとえば、パスワードリセット電子メールを取得するには、ユーザーが秘密の質問に回答する必要があります(通常、アカウントの作成時に設定されます)。

関連する問題