PHPでパスワードを保存する際に暗号(パスワードハッシュ)化させ、ログイン認証時に用いる方法
PHPでログイン認証を組み込む際に今までは特に暗号化は行っていなかった。と言うのも複数のユーザーがログインするシステムを組むことがほぼ無く、1人の管理者のみがログインするようなシステムがほとんどだったため、そこまで気を使っていなかった。とはいえ実装方法ぐらいは知識として持っておきたいので以下にメモ。
暗号化
$pass = 'testpass'; $pass_hash = password_hash($pass, PASSWORD_DEFAULT); var_dump($pass_hash); //$2y$10$AZnvTbpslc9kl2NilsU8ZO6X7zemJ7ITz/jtFUNYqmnXG3oEqP1gK が出力される
password_hash関数で暗号化できる。第2引数は必須で特にこだわりがなければ「PASSWORD_DEFAULT」指定で良さそう。尚、データベースに保存する際はvarchar(255)あたりが適切っぽい。
認証方法
$pass = 'testpass';
$db_pass = '$2y$10$AZnvTbpslc9kl2NilsU8ZO6X7zemJ7ITz/jtFUNYqmnXG3oEqP1gK';
if( password_verify($pass, $db_pass) ){
echo 'success';
}else{
echo 'error';
}
password_verify関数で認証させる。
所感
複数のユーザがログインするようなシステムの場合は暗号化が必須だと思われるので対応方法を覚えておく。
関連記事
-
-
PHPとSQLiteでi-mobileのデータをグラフ化する方法
i-mobileでクリック保証のアフィリエイトだけど数値が並んでいるだけでグラフ ...
-
-
Smartyでテンプレートファイル(tplファイル)を編集しても反映されない
Smartyで作成されたシステムがあり、一部修正でtplファイルを編集したものの ...
-
-
PHPMailerでエラーメッセージを日本語で出力する方法
PHPMailerのGitHubページを見ていると言語設定についての案内を見つけ ...
-
-
PHPで「php-qrcode-detector-decoder」ライブラリを使用してQRコードをデコードする方法
PHPでQRコードの画像をデコードし、値を変数等に格納したい。何とかならないか調 ...
-
-
PHPのHTTPリクエストライブラリ「Requests for PHP」の利用方法
PHPで外部のAPI等にリクエストする際に可能であればfile_get_cont ...