2012-01-14 10 views
10

アプリケーションのパスワードハッシュアルゴリズムを変更する場合、システムはデータベースに既に保存されている値をどのように移行する必要がありますか?私はハッシュフォームでそれらを移行することはできないが、新しいハッシュを計算するためには入力データを持つ必要があるという事実をよく知っている。パスワードを別のハッシュ方法に移行する方法

私は入力されたデータへのアクセス権を持っているウィッヒに2つの状況があります

  1. ログイン時に
  2. ユーザーが自分のプロファイル設定でパスワードを変更

のいずれかの間にのみ明らかにこれらは私はパスワードを移行するためにデータベースに新しいハッシュを保存することができます。

私の同僚のすべてが方法1に投票していますが、私の腸はそれをしないように指示しています。お勧めの方法はありますか?

+0

#1は私のために働きます。あなたがしなければならないのは、両方のハッシュをチェックして、古いものがDBにあるものとマッチすれば、それを新しいものと置き換えればいいだけです。これにより、滑らかな遷移が可能になります。 –

答えて

13

ログオン時にこれをしない理由はありません。 #1をしたくない理由はありますか?新しいハッシュに対する検証が失敗した場合、古いハッシュアルゴリズムに対する検証を行います。それがうまくいくならば、古いハッシュに新しいハッシュを書きます。これは、ユーザーがパスワードを変更するよりもログオンする可能性が高いため、パスワードの変換が高速になることを意味します。あなたに人を強制しない限り、ほとんどの人がそれを自分たちで変えるだろうと私は疑う。

0

問題の詳細を知らなくても具体的なアドバイスを得るのは難しいです。私はあなたのパスワード記憶戦略を変更したい理由は、あなたの新しい戦略があなたの既存の戦略よりもはるかに安全になるためだと考えます。

これが当てはまる場合、待機する可能性は何ですか?この考えは、既存のリスクを緩和することです。ユーザーは現実的にパスワードを変更することはほとんどありません。新しいストレージ戦略に移行する場合は、ログイン時にそれを実行するか、恐ろしいセキュリティを備えた大量のデータベースをパスワードでいっぱいにする必要があります。

4

古い認証コード(すなわち、新たな枠組みへの切り替えを。)に触れたり、単に古いパスワードフィールドのことは自分を取り除くたくないだろうしていない場合はここで代替ソリューションです:

  1. 既存のテーブルのパスワードをバックアップしてから、このテーブルの[パスワード]列にある既存のエントリをすべて削除します(もちろん、必要に応じてカラムのタイプを更新してください)。

  2. 次回のログイン時に、パスワードテーブルを確認し、パスワードなしでユーザーがいる場合は、「」と入力してシス​​テム全体のアップグレードを実装し、すべてのアカウントを再確認する必要があります "

  3. ユーザーはメールにアクセスして、「あなたのメールアドレスを入力してください」というようなリンクをクリックすると、私のアカウントを再確認する "。それらは、電子メールに示されているリンクから受け取った安全なトークンパラメータを必要とするページに移動します。このページでは、ユーザー名とパスワード(さらに重要なのはパスワード)を入力してアップグレードを完了するように求められます。入力ミスを防ぐためにパスワードを2回入力するように要求することができます。技術的には、ここでパスワードを作成しています。 「パスワード」と「パスワードを確認」の2つの入力で簡単に質問してください。

両方プロの詐欺のこのソリューションには、他の人と比較して、同様もちろんあります。良いことは、あなたの新しい環境に古いハッシュコードを追加する必要がなく、ある日すべてのユーザーが最終的に再度ログインするまでそこに座ることです。しかし、このソリューションには、余分なコード(電子メール/トークンなどを送信するためのコード)を書くという代償が伴います。その作業を、入力されたフォーム入力をインターセプトし、古いハッシュをチェックし、新しい認証コードに渡すという、提案されたソリューションに関連する作業と比較する必要があります。あなたのためのちょっとしたアイデア。

+1

"良いことは、あなたの新しい環境に古いハッシュコードを追加する必要はなく、ある日すべてのユーザーが最終的に再びログインするまで座っておくことです。あなたはそれをする必要もありません。誰もがまだ変換されていなくても、パスワードワークフローを忘れてしまったとしても、それをヤンクすることができます。 – Andy

+0

うん、そうだよ。 – prograhammer

1

類似のビジネスモデルでB社を引き継ぎ、すべての顧客をA社が所有する1つのより大きなシステムに統合し、異なるパスワードハッシュアルゴリズムを持つB社のユーザーシステムを廃止する必要があります、 これを達成する最良の方法は、にパスワードを変更します。登録された電子メールアドレスを使用して、移行されたすべてのユーザーに対してを変更します。

+0

もちろん、ユーザーには古い電子メールアドレスにアクセスすることはできません。その場合、代替ワークフローが必要になります。 – Andy

関連する問題