Webサービスでパスワードを扱う際、基本的にパスワードはハッシュ化してDBに保存します。
Webサービスに必須の「ハッシュ化」のやり方について、まとめます。
OS:Windows11 Home / WSL(Ubuntu20.04)
php:v7.4.33
以下に「パスワードのハッシュ化のやり方」と「パスワードの認証のやり方」をご紹介します。
ハッシュ化は以下のようにやります。
$password_hashed = password_hash("パスワード", PASSWORD_DEFAULT);
例)$password_hashed = password_hash("testpass", PASSWORD_DEFAULT);
出力してみるとこんな感じになっているはずです。
$2y$10$enS8Vkgn5eE.QGEuxrBzwOylV4ll2xxRl7C6UEyqvdx3XsnZEbyhq
DBに保存する際は、元の文字列ではなくハッシュ化した値を格納します。
パスワードをハッシュ化してDB格納すると、元のパスワードはDBに無いのでサインインの時などに困ります。
サインイン時「ユーザーが入力した値」と「DBに保存された値」を比べる際には文字列どうしの比較ではなく、関数を使ってパスワードが合っているかを確認します。
password_verify("ユーザーが入力した値", "DBに保存された値");
例)password_verify("testpass", $password_hashed);
password_verify()はtrue、falseを返します。