Web サイトに簡単なパスワード リセット システムを実装しようとしています。アイデアは次のとおりです。
- ユーザーがパスワード リセット リンクを要求します。
- CodeIgniter システムは、MYSQL 経由で RAND と MD5 (安全ではなく壊れていることはわかっています。要点ではなく、おそらく SHA1 以上を使用するのが最善です) を使用して、ランダムな文字列を生成し、それをハッシュして、32 ビット キーを生成します。
- ユーザーには、キーで構成されるリンクが送信されます。
- 残りはかなり明白です。
私は知りたい -
A: UNIQUE として設定されたフィールドに生成される MD5 (またはそれ以上) の MYSQL 関数 RAND は、そのフィールドの下のテーブルに既に存在するキーを生成した場合、自動的に再生成されます。
B: これは、パスワード リセット リンクを生成するための受け入れ可能な方法です。それとも、重複を防ぐためにユーザーのメールアドレスをソルトでハッシュした方がよいでしょうか?
明らかに、これは基本的な実装に過ぎず、セキュリティ ニーズはプロセス全体に含まれています。