パスワードセキュリティは、常にインターネットアプリケーション開発の中心的な問題の1つです。ユーザーアカウントのセキュリティを確保するために、開発者は正しいパスワードストレージ方法を採用して、データベースにパスワードが漏れたりひび割れたりしないようにする必要があります。 PHP 7は、パスワードのストレージと保護を簡素化および強化する強力なpassword_hash関数を提供します。この記事では、 Password_hashを使用してパスワードハッシュを生成し、いくつかのベストプラクティスを導入する方法について説明します。
パスワードハッシュは、元のパスワードを数学的に計算し、一見ランダムな文字の文字列を生成することにより、パスワードを保存する手法です。このようにして、データベース内のパスワードハッシュが漏れている場合でも、攻撃者が元のパスワードを回復することは困難です。ユーザーがログインすると、Plantextパスワードを保存せずに入力されたパスワードを保存されたハッシュ値と比較することにより、システムはユーザーのIDを確認できます。
Password_hash関数は非常にシンプルで使いやすいです。 2つのパラメーターを受け入れます。1つはハッシュする元のパスワード、もう1つは指定されたハッシュアルゴリズムです。これが例です:
$rawPassword = "myPassword";
$options = ['cost' => 12];
$hashedPassword = password_hash($rawPassword, PASSWORD_DEFAULT, $options);
上記の例では、デフォルトのパスワードアルゴリズムを使用して、コストパラメーターを設定します。コストは、ハッシュを計算するのに必要な反復数を表します。値が高いほど、ハッシュ計算時間が長くなり、亀裂の難しさがそれに応じて増加します。一般的に、コストを10〜12に設定することは妥当です。
パスワードハッシュが生成されたら、 password_verify関数を使用して、ユーザーが入力したパスワードが保存されたハッシュ値と一致することを確認できます。パスワードを確認する簡単な例を次に示します。
$rawPassword = "myPassword";
$hashedPassword = "<データベースから取得したハッシュ値>";
if (password_verify($rawPassword, $hashedPassword)) {
echo "パスワードを修正します";
} else {
echo "エラーパスワード";
}
上記のコードでは、ユーザーが入力したパスワードをデータベースに保存されているハッシュ値を比較します。両方が一貫している場合、パスワードの検証が成功することを意味します。
password_hashとpassword_verify関数を使用することに加えて、パスワードストレージのセキュリティをさらに改善するために、次のベストプラクティスを取ることもできます。
PHP 7では、 password_hash関数を使用すると安全なパスワードハッシュを簡単に生成できますが、 password_verify関数を使用すると、パスワードが正しいことを確認できます。パスワードセキュリティを確保することで、ユーザーアカウントを保護するだけでなく、システム全体のセキュリティを改善します。この記事のベストプラクティスに従うことにより、パスワードの割れのリスクを効果的に減らし、ユーザーに強力な保護を提供できます。