勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでパスワードを保存する際に暗号(パスワードハッシュ)化させ、ログイン認証時に用いる方法

  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

  関連記事

ソシャゲのガチャのように当選確率が異なる抽選システムをPHPで作成する方法

ソシャゲのガチャみたいな当選確率が異なる抽選システムをPHPで作成したかった。具 ...

Facebookのタイムラインを取得して表示する方法

Facebookのタイムラインを取得してきて、表示させたいという案件があった。 ...

FLASHがインストールされているかどうかチェックする

以前にここでちょっとやったけど、インストールされているか どうかだけならもっと良 ...

PHPからDBX Platformを利用してDropbox内のファイルを削除する方法

以前にPHPからDropboxのファイル一覧のデータ(ファイル名や更新日時等)を ...

PHPのOpenSSL関数で文字列の暗号・復号化を行う方法

だいぶ前にPHPでBlowfishアルゴリズムを用いた暗号化と復号化する方法をメ ...