【PHP8.x】password_hash関数の使い方
password_hash関数は、ユーザーのパスワードを安全に保存するために、不可逆なハッシュ値を生成する関数です。データベースなどにパスワードを平文のまま保存することは、セキュリティ上の重大なリスクを伴うため、この関数を用いてハッシュ化することが強く推奨されます。
この関数は、入力された平文のパスワードに対して、自動的にユニークな「ソルト」(salt)と呼ばれるランダムなデータを生成し、それをパスワードに付加してからハッシュ化を実行します。このソルトのおかげで、たとえ同じ平文のパスワードであっても、password_hash関数を複数回実行するたびに異なるハッシュ値が生成されます。これにより、辞書攻撃やレインボーテーブル攻撃といったパスワード解析の手法に対する耐性を大幅に高め、セキュリティを向上させることが可能です。
関数を使用する際は、第一引数にハッシュ化したい平文のパスワード文字列を、第二引数には使用するハッシュアルゴリズムを指定します。特に指定がない場合は、PHPが推奨する最も安全なアルゴリズムを自動的に選択する定数である PASSWORD_DEFAULT
を使用することをお勧めします。また、オプションでハッシュ計算の負荷(コスト)を調整するパラメータも指定できますが、通常はデフォルト設定で十分な安全性を確保できます。
password_hash関数は、成功するとハッシュ化されたパスワード文字列を返します。この生成されたハッシュは、ユーザーがログインする際にパスワードを検証するために、password_verify()
関数と組み合わせて使用することが一般的です。これにより、平文のパスワードを知ることなく、入力されたパスワードが正しいかどうかを安全に確認することができます。
基本的な使い方
構文(syntax)
<?php
$password_to_hash = 'your_password_here';
$hashing_algorithm = PASSWORD_DEFAULT; // PASSWORD_BCRYPT, PASSWORD_ARGON2ID など
$options_array = []; // 例: ['cost' => 12]
$hashed_password = password_hash($password_to_hash, $hashing_algorithm, $options_array);
?>
引数(parameters)
string $password, string|int $algo, array $options = []
- string $password: ハッシュ化するパスワードを指定する文字列
- string|int $algo: 使用するハッシュアルゴリズムを指定する文字列または整数。デフォルトは PASSWORD_DEFAULT
- array $options = []: ハッシュ化のオプションを指定する連想配列。利用可能なオプションはアルゴリズムによって異なります
戻り値(return)
string|false
ハッシュ化されたパスワード文字列、または処理に失敗した場合は false
を返します。