password_hash

関数の概要

PHPの password_hash 関数は、ユーザーのパスワードを安全にハッシュ化するために使われます。ハッシュ化とは、一方向性の変換を意味し、元のパスワードから復元できないように変換します。ログイン認証の際に平文パスワードを直接扱わず、ハッシュ値を比較することでセキュリティを向上させます。

パラメータの説明

  • string $password – ハッシュ化したいユーザーパスワードの文字列。
  • int $algo – 使用するハッシュアルゴリズム。基本的に PASSWORD_DEFAULT(推奨)か PASSWORD_BCRYPT を指定。
  • array $options – ハッシュのオプション配列。
    主なオプションは以下の通りです:

    • 'cost' – 計算コストの指定(デフォルトは10)。値が大きいほど計算に時間がかかり、セキュリティは向上しますが、負荷が増えます。
    • 'salt' – 独自のソルト文字列。基本的には使用しないこと。PHPが自動的に安全なソルトを生成します。

戻り値

成功するとハッシュ化された文字列を返します。この文字列は、password_verify 関数でパスワード検証に利用可能です。失敗した場合は false を返します。

使用例

基本的な使い方

<?php
$password = "userpassword123";
$hashed = password_hash($password, PASSWORD_DEFAULT);
echo $hashed;
?>

この例では、デフォルトのアルゴリズムを使ってパスワードをハッシュ化しています。生成されたハッシュは安全にデータベースに保存できます。

コストの指定例

<?php
$options = ['cost' => 12];
$hashed = password_hash("securePass!", PASSWORD_BCRYPT, $options);
echo $hashed;
?>

ここではコストを12に設定し、計算量を上げてより強固なハッシュを生成しています。コストはパフォーマンスとセキュリティのバランスを考えて調整してください。

パスワード検証との組み合わせ

<?php
$hash = password_hash("mypassword", PASSWORD_DEFAULT);

if (password_verify("mypassword", $hash)) {
    echo "パスワードが正しいです。";
} else {
    echo "パスワードが間違っています。";
}
?>

password_hash で生成したハッシュは password_verify を使って、入力されたパスワードと照合できます。これにより安全にログイン認証が行えます。

関連する関数

  • password_verify – ハッシュ値と平文のパスワードを比較して認証する。
  • password_needs_rehash – ハッシュのアルゴリズムやオプションが古くなっているか確認する。
  • password_get_info – ハッシュの情報(使用アルゴリズム等)を取得する。

まとめ

password_hash はPHPで安全にパスワードを扱うための重要な関数です。ハッシュ化によってパスワードの漏洩リスクを軽減し、password_verify と組み合わせて強固な認証システムを構築できます。特に初心者でも簡単に使える設計となっており、オプションのコスト調整でセキュリティレベルの最適化も可能です。必ずこの関数を使って安全なパスワード管理を心がけましょう。