sha1
は、塩漬けまたはチーズ質のタマネギフレーバーで、暗号化されていないので、ハッシングと呼ばれます。ユニークな出力を持つ一方向関数です。データベースのパスワードの塩漬けハッシュを使用してのアイデアは2つあります。データベースへのアクセス権を持つ誰もが、実際にこれらのパスワードが何であるかを判断することはできませんので
- ハッシュは、一方向関数です。非常に良い練習。
- あなたがユーザー名+パスワード+いくつかの迷惑メールをハッシュしていると仮定すると、塩味のついた部分は、各ユーザー名+パスワードの組み合わせが一意のハッシュであることを意味します。ほとんどの人には
ninefingers:stackoverflow!!:{insertcommonwordhere}
の辞書がないので、事前計算されたハッシュによる辞書攻撃/ショートカットが難しくなります。それはそれを生成するのを止めるものではなく、もっと不便にさせるだけです。
これで、ユーザーがパスワードを忘れた場合、ハッシュを元に戻すことができないため、パスワードを電子メールで送信できなくなりました。意図的に。
あなたが探しているのは、ユーザーが安全にパスワードをリセットできるようにすることです。これは、ユーザーが電子メールアドレスを入力すると、パラメータに短時間のウィンドウに有効な一意の一度限りのトークンを含むサイトへのリンクを電子メールで送信するというものです。
他のオプションはありますか?パスワードを生成して電子メールで送信します。英国のUk Gov't Gatewayは非常に興味深いことをしています。ウェブページにはパスワードの半分、メールには半分の半分が含まれています。両方ともログインする必要があります。
今、百万ドルの質問:それは安全ですか?いいえ、安全です。 100%のセキュリティはありません。これまでパスワードを格納するこの特定の方法により、セキュリティが強化されます。
- DBAはユーザーテーブルへのアクセスを悪用することは容易ではありません。
- 何らかの理由で
select * from table users;
がこれらのパスワードを簡単に読み取ることができないという悪意のある要求。
しかし、すぐにあなたが安全な通信の方法として、ユーザーに電子メールを送ることができることに依存しているとして、あなたがに頼る:
- 自分のメールアカウントが安全です。
- 電子メールが監視されていないことを示します。
質問は本当に必要ですか?実際には価値の高いターゲットではないため、電子メールアウトリセットリンクソリューションの実装はほとんどの場合有効です。
新しいランダムパスワードを生成してユーザーに電子メールで送信し、次回ログインするとすぐにパスワードを変更するのは間違っていますか? –
一度パスワードが暗号化されると、それらは機能しなくなると言っていますか? –