1

セキュリティ上の理由から、ユーザーに頻繁にパスワードを変更するよう強制する必要があります。明らかなセキュリティ上の理由から、以前のパスワードに非常に近いパスワードは望ましくありません。

しかし、セキュリティ上の理由から、実際のパスワードを DB に保持することはできません (つまり、パスワードをハッシュするか、他の方法を使用する必要があります)。しかし、ハッシュを比較しても役に立たないと思います。

2 つのパスワードを比較して、それらが互いに近いかどうかを確認する方法はありますか?

例: password と password1 が近すぎます。

4

2 に答える 2

4

ユーザーに新しいパスワードを選択させるときに、古いパスワードを入力させます。これにより、古いパスワードをプレーンテキストで保存しなくても、新しいパスワードと古いパスワードを比較できます。

于 2013-09-11T08:06:15.887 に答える
1

ユーザーが通常どおりログインすると、パスワードのハッシュがデータベースに保存されます。入力したものをハッシュすることで、入力したパスワードとハッシュを比較し、結果のハッシュがデータベース内のハッシュと同じであれば、それは受け入れられます。

古いパスワードと比較するには、同じことを行います。パスワードハッシュフィールドをold-password1にコピーするだけで、最後のパスワード(または最後の5、10 ... xパスワード)をデータベースに保存できます(後で再利用しないようにする場合は、各パスワードを1列にシフトします)いくつかの変更、old-password1 が old-password2 になるなど) 次に、新しいパスワードを入力すると、いつもと同じ方法で比較できますが、古いハッシュと比較できます。それが古いハッシュと一致する場合、それが彼らが最後に使用した X パスワードの 1 つであってはならないというメッセージでそれを拒否します。

クリアテキストのパスワードを保存する必要はなく、必要な数の古いハッシュを保持できます。

于 2013-09-11T18:12:18.820 に答える