【PHP8.x】password_verify関数の使い方

作成日: 更新日:

password_verify関数は、ユーザーが入力したパスワードと、データベースなどに安全に保存されているハッシュ化されたパスワードが一致するかどうかを検証するために使用する関数です。この関数は、主にログイン認証の際に、ユーザーが入力した生のパスワードと、以前にpassword_hash()関数で生成されて保存されたハッシュ値とを比較し、その妥当性を判断します。

第一引数にはユーザーがフォームなどから入力した平文のパスワードを、第二引数にはあらかじめpassword_hash()関数によって生成され、データベースなどに保存されているハッシュ化されたパスワードを指定します。パスワードが一致した場合はブール値のtrueを返し、一致しなかった場合はfalseを返します。

この関数の大きな特徴は、単なる文字列比較ではなく、セキュリティを考慮した安全な方法で検証を行う点です。具体的には、タイミング攻撃などのサイドチャネル攻撃を防ぐための仕組みが内部に組み込まれており、パスワードを安全に取り扱う上で非常に推奨される方法です。パスワードを直接平文で保存することなく、常にハッシュ化された形式で管理し、検証時にこのpassword_verify()関数を使用することで、堅牢な認証システムを構築できます。PHP 8環境において、セキュアなパスワード処理を実現するための基盤となる重要な関数の一つです。

基本的な使い方

構文(syntax)

<?php
$userEnteredPassword = 'mySecurePassword123';
$storedHashedPassword = '$2y$10$s.a.l.t.y.h.a.s.h.v.a.l.u.e.f.r.o.m.d.a.t.a.b.a.s.e.h.e.r.e.';

$isPasswordCorrect = password_verify($userEnteredPassword, $storedHashedPassword);
?>

引数(parameters)

string $password, string $hash

  • string $password: 検証したい平文のパスワード
  • string $hash: 検証に使用するハッシュ化されたパスワード

戻り値(return)

bool

指定されたパスワードが、指定されたハッシュ値と一致するかどうかを真偽値(bool)で返します。一致する場合は true、一致しない場合は false を返します。

【PHP8.x】password_verify関数の使い方 | いっしー@Webエンジニア