ログイン機能を作成する[セッションハイジャック]

2016年3月3日

PHP

「新規会員登録機能を作成する」で作成した会員データ(memberテーブル)を利用したログイン機能を作成します。

 

ログイン機能のデモ画面

 

 

新規会員登録機能を作成する(1/3)

 

新規会員登録機能を作成する(2/3)

 

新規会員登録機能を作成する(3/3)

 

 

スポンサーリンク

 

 

memberテーブルは以下のような構造になっています。

 

member

 

新規会員機能を作成しなくてもログイン機能だけで試せるように、memberテーブルにはあらかじめ以下のデータを入力して下さい。アカウントは「ウェブの葉」、パスワードは「samplepass」でログインできるようになります。

 

 

上記SQL文を実行した結果。

アカウント・パスワード

 

passwordカラムに入力される$2y$10$V〜は「samplepass」をpassword_hash()関数でハッシュ化した値です。

 

password_hash()関数については関連ページをご参照下さい。

ハッシュ関数について/password_hash()を利用する

 

 

login_form.php(ログインフォーム画面)

 

7・8行目

クロスサイトリクエストフォージェリ(CSRF)については以下の関連ページをご参照下さい。

クロスサイトリクエストフォージェリ(CSRF)[トークン]

 

11行目

クリックジャッキング対策については以下の関連ページをご参照下さい。

クリックジャッキング[X-FRAME-OPTIONS]

 

 

 

login_check.php

(アカウント・パスワード確認。認証が通ればlogin_admin.phpへ遷移する。)

 

16・17行目

データベースの接続を行っています。db.phpは本ページの下記に記載しています。

 

68行目

まずアカウントでmemberテーブルを検索しています。またflagが1(デフォルトで1の設定)の条件を付けています。

 

73行目〜

一致するアカウントがあれば、次にパスワードが一致するかを調べていきます。(※「新規会員登録機能を作成する」では、同じアカウント名で登録されているかをチェックしていません。)

 

78行目

入力されたパスワードとpassword_hash()関数でハッシュ化された値を検証しています。password_verify()関数については、以下の関連ページをご参照下さい。

 

ハッシュ関数について/password_hash()を利用する

 

81行目

ログインする前に、新しいセッションIDを生成しています。以下の関連ページをご参照下さい。

 

セッション固定化攻撃[セッションハイジャック]

 

84行目

アカウント・パスワードが一致すればlogin_admin.phpへ遷移します。

 

 

login_admin.php(ログイン状態)

 

 

logout.php(ログアウト)

 

 

db.php(データベース接続)

 

4〜6行目

環境に合わせて適当な値を設定して下さい。

 

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー