第8章 リクエスト情報 / 第3回 模擬試験

PHPのセッションの仕組みに関する次の記述のうち、誤っているものはどれか。

セッションIDは、通常Cookieを使ってクライアントとサーバー間でやり取りされる。
セッションデータは、デフォルトではサーバー側のファイルなどに保存される。
セッションを利用するには、各ページの先頭で`session_start()`を呼び出す必要がある。
セッションIDはページを移動しても絶対に変化してはならない仕様である。 正解
解説
セッションIDは固定であるべきものではなく、むしろセキュリティ対策として意図的に変更することが推奨される場面があります。特にログイン成功時などに`session_regenerate_id()`でセッションIDを再生成することは、セッション固定攻撃(Session Fixation)への対策として一般的に行われます。「絶対に変化してはならない」という記述は誤りです。 他の選択肢が正しい理由は次の通りです。 ・セッションIDは、通常`PHPSESSID`という名前のCookieを介してクライアントとサーバー間でやり取りされます。 ・セッションデータ自体は、PHPの既定設定ではサーバー側のファイル(一時ディレクトリ)に保存されます。 ・セッションデータ(`$_SESSION`)を使いたい各ページでは、それより前に`session_start()`を呼び出しておく必要があります。 例: ``` session_start(); // ログイン成功時 session_regenerate_id(true); // 古いセッションを削除しつつIDを再生成 $_SESSION['user_id'] = $user->id; ``` (参照: 独習PHP 第4版 第8章 リクエスト情報 8.7節 セッション情報 p.387〜395)