web-dev-qa-db-ja.com

セキュリティは初めてですが、php password_hash()で十分ですか?

個人情報を扱う必要があったのは今回が初めてであり、十分なセキュリティを確保したい。私はユーザーのメールアドレスとアカウントのパスワードをMySQLテーブルに保存するので、password_hash()関数がハッシュに十分かどうか疑問に思いました。

たとえば、これはパスワードを保存するための許容できるセキュリティ量でしょうか?:

$password = password_hash($password, PASSWORD_BCRYPT);

次に、ユーザーがログインして確認するときに、ハッシュされたパスワードを比較します。また、連絡用のメールは必要ないため、ハッシュ化することもできます。

9
user38230

最初にbcryptを使用することをお勧めします。それが推奨される選択肢(または推奨される選択肢の少なくとも1つ)です。 documentation は、PHPfinallyが適切に処理することを示しているようです。 PHPバージョンは少なくとも5.5.0です。saltをいじろうとしないでください。デフォルトでは、関数は必要に応じてランダムなsaltを生成します。これが正しい方法なので、仕事を任せてください。

「コスト」オプションも変更してみてください。 bcryptの場合、コストは4〜31の範囲の値です。各増分は、サーバーと攻撃者の両方にとって、パスワードハッシュのコストが2倍になることを意味します。実際には、サーバーのパワー、平均負荷、ピーク負荷、および最大のユーザー忍耐力を考慮して、その値を許容できる限り高くしたいとします。これにより、期待できる最高のセキュリティが得られます。

(「良い」ではなく「最高」と言ったことに注意してください。)

適切なパスワードハッシュの基本的な概念を理解したい場合、およびbcryptが適切な選択である理由は、 ここから開始 です。

9
Tom Leek