個人情報を扱う必要があったのは今回が初めてであり、十分なセキュリティを確保したい。私はユーザーのメールアドレスとアカウントのパスワードをMySQLテーブルに保存するので、password_hash()関数がハッシュに十分かどうか疑問に思いました。
たとえば、これはパスワードを保存するための許容できるセキュリティ量でしょうか?:
$password = password_hash($password, PASSWORD_BCRYPT);
次に、ユーザーがログインして確認するときに、ハッシュされたパスワードを比較します。また、連絡用のメールは必要ないため、ハッシュ化することもできます。
最初にbcryptを使用することをお勧めします。それが推奨される選択肢(または推奨される選択肢の少なくとも1つ)です。 documentation は、PHPfinallyが適切に処理することを示しているようです。 PHPバージョンは少なくとも5.5.0です。saltをいじろうとしないでください。デフォルトでは、関数は必要に応じてランダムなsaltを生成します。これが正しい方法なので、仕事を任せてください。
「コスト」オプションも変更してみてください。 bcryptの場合、コストは4〜31の範囲の値です。各増分は、サーバーと攻撃者の両方にとって、パスワードハッシュのコストが2倍になることを意味します。実際には、サーバーのパワー、平均負荷、ピーク負荷、および最大のユーザー忍耐力を考慮して、その値を許容できる限り高くしたいとします。これにより、期待できる最高のセキュリティが得られます。
(「良い」ではなく「最高」と言ったことに注意してください。)
適切なパスワードハッシュの基本的な概念を理解したい場合、およびbcryptが適切な選択である理由は、 ここから開始 です。