session_regenerate_id()の必要性に関して
PHP初心者です
PHPのセッションハイジャック対策で挙げられている
session_regenerate_id(TRUE);
って必要なんでしょうか
というのも自分でセッションを使った簡易なログインシステムを作りまして、
index.phpからユーザー名とパスワードを入力してDBからユーザー名とパスワードが取り出せたらlogin.phpにいけるというシステムなんですが
ヘッダー情報を閲覧するツールを使いまして。
ログインした際にヘッダー情報に流れるPHPSESSIDを使って
curl --cookie "PHPSESSID=セッションID" localhost/login.php
みたいな感じにクッキー情報にセッションIDを入れてcurlを打ったらログイン画面の内容が表示されました
○○○さん(ユーザー名)こんにちは。 みたいな感じです
session_regenerate_id(TRUE);
を使っていたのでPOSTする際にセッションIDを毎度発行してくれると思ったのですが
同じセッションIDをヘッダー情報に混ぜてもログインできたのでこれはつまり対象がログインしている状態であれば何らかの形でセッションIDを盗みさえできれば乗っ取りも容易ってことですよね?
session_regenerate_id(TRUE);の意味ってなんなんでしょうか
何か根本的な事を理解してない事は自覚してるのですがパっとしません。・。・・
ockeghem氏
index.phpの一部のコードです
if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
session_regenerate_id(TRUE);
$_SESSION['username'] = $row['username'];
header('Location: http://127.0.0.1/login.php');
のようにレコードを取り出せたらsession_regenerate_id(TRUE);を宣言してセッション変数に取り出したユーザー名を入れてlogin.phpに飛ばすという大雑把な流れなんですが、ここら辺に問題があるのでしょうか?