0

ユーザーが Facebook または通常のフォームでサインアップできるシステムがあります。ユーザーが Facebook でサインアップした場合、ユーザーが必要に応じて Facebook なしでログインできるようにするために、私のシステムはランダムなパスワードを生成します。通常のフォームを使用してユーザーがサインアップする場合、ユーザーは任意のパスワードを入力できます。どちらの方法でも、パスワードは MD5 ハッシュにエンコードされますが、ソルティングは行われません。それは安全ではありません、私は知っています、これが私がここにいる理由です。

パスワードを安全なものに変換するための最善の戦略がわかりません...まず、MD5 の安全でないパスワードを保持することを考えています。ユーザーのログイン時に、salt、salt-it、および次に、データベースを更新します。しかし、システムは安全でないパスワードを受け入れるため、私の問題は解決しません。それに加えて、ユーザーはまだFacebookを使用してログインできますが、魔女はパスワードを更新することを許可していません(彼はそれを使用していないため)。

では、全員にパスワードの更新を強制するのではなく、影響を最小限に抑えるためのアイデアはありますか?

ありがとう!

4

1 に答える 1

0

そのため、問題を解決するために次のアクションを実行しました。

  1. users テーブルに列「LastPasswordChange」を作成しました。
  2. ユーザーがパスワードを変更すると、フィールドは現在の日付で更新されます。また、パスワードが変更されたことを通知する電子メールがユーザーに送信され、これが間違っている場合に元に戻すためのリンクが含まれます (ハッキングの可能性があるため)。
  3. 電子メールにより、ユーザーは最後に使用したパスワードを知らなくても、ログインして新しいパスワードを設定できます。
  4. ユーザーが現在のパスワードを使用してログインすると、LastPasswordChange フィールドが参照され、null の場合はソルトを使用せずにログインが許可されます。
  5. どのような方法でログインしても (Facebook またはログイン/パス)、システムは LastPasswordChange フィールドを参照し、それが null の場合、システムはユーザーに現在のパスワードを別のパスワードに変更するよう要求します (salt なしで古いパスワードと一致しない)。 .

それでおしまい。

于 2013-05-02T19:27:28.377 に答える