PHP:ログイン処理を見直す

PHPを学習しながら、とあるサイトの見直しを行っているがログイン処理がまずい。
ID/PWDはCookieにそのまま保存しているので改善する。

単純にセッション化

・session_start() でセッションを開始
・認証に成功したら $_SESSION['パラメータ名']=パラメータ値 でID/PWDを保存 ($_COOKIEは使わない)
・次回の認証は $_SESSIONに保存したID/PWDを使用する

CookieからID/PWDが削除されていることを確認
Chromeの場合 → [設定] - [詳細設定] - [プライバシーとセキュリティ - コンテンツの設定] - [Cookie] - [すべてのCookieとサイトデータを表示]

パスワードをハッシュで保存

パスワードをそのままDBに登録しているのでハッシュで保存するように改善
・ハッシュは password_hash('パスワード', PASSWORD_DEFAULT) で取得できる
・パスワードとハッシュが等しいかは password_verify('パスワード','ハッシュ') で調べられる

☆セッションを開始すると、Cookieに"PHPSESSID"という名前でセッションIDが保存される。
Cookieの名前はこのままでも良いのだが念のために変えておく。
名前の変更は session_start実行前に session_name('名前') を呼び出せばOK

さらにセキュリティ強化

・session.use_strict_modeを'1'にする
php.iniを変更するか、session_start実行前に ini_set('session.use_strict_mode', '1'); を実行。
'1'を設定することでPHPが初期化したセッションID以外のセッションIDは受け付けなくなる。

・セッションIDを毎回変更する
session_start実行後に session_regenerate_id(true) を実行。
これで毎回セッションIDが変更されます。


[PHP]

0 件のコメント:

その他の記事