質問: PHPを学び始めて1年以内の者です。 **・$_SESSIONにパスワードを格納するのは安全ではない ・DBにはハッシュ化したパスワードのみを保存** 以上をふまえ、 **ユーザー情報変更ページで、各々が自分のパスワードを変更をできるよう設定したい**のですが 編集ページのform内に「現在のパスワード: ****** 」というようにアスタリスクで表示させたい場合、 慣例となっているやり方はあるのでしょうか。 (知りたいのは、どのようにパスワードを保存し、取り出すのか という点です) どなたか、ご教授いただければ幸いです。 どうぞよろしくお願いいたします。
回答: パスワードを平文のまま保存するのは良くないので "ハッシュ化した結果 = パスワードハッシュ" を代わりに保存するのが一般的ですが、ここでハッシュ化とは **一方向に変換するアルゴリズム** なので、パスワードハッシュから元のパスワードを取り出すことは出来ません。 認証が必要な場面では「保存されたパスワードハッシュ」と「ユーザーが入力したパスワードを元に (同じ手順で) パスワードハッシュを生成」した値をそれぞれ比較して一致するかを見ています。 PHP であればこの辺りの操作を password_hash や password_verify を使うことで簡単に実装出来ます。 > > > ``` > password_hash ( string $password , mixed $algo , array $options = ? ) : string|false > > ``` > > password_hash() は、強力な一方向ハッシュアルゴリズムを使って 新しいパスワードハッシュを作ります。 > > > > > > ``` > password_verify ( string $password , string $hash ) : bool > > ``` > > 指定したハッシュがパスワードにマッチするかどうかを調べます。 > > >