PHP: http: と https: で使えるセッションクッキーを観察する
1. このページの目的
http: と https: で使えるセッションクッキー(PHP)を観察する。
つまり secure属性のないセッションクッキーである。
2. 値を表示する
2.1. 追加機能
- セッション変数をクリアする
- セッションIDを新しく振る(セッション内のデータは維持される)
2.2. 各種値の出力
PHPSESSID
Set-Cookie: PHPSESSID=7f03526aee6095f379226591b1231c78; path=/; HttpOnly; SameSite=lax
7f03526aee6095f379226591b1231c78
- パラメータ
session_regenerate_id
を付けると新しい session_id が振られる。
2024-11-21T15:26:30+09:00
'name|s:3:"Foo";age|i:100;current-time|s:25:"2024-11-21T15:26:30+09:00";'
3. このページに書いてあるPHPコードの一部
session_start([
'cookie_httponly' => true,
'cookie_samesite' => 'lax',
]);
if (isset($_GET['clear'])) {
$_SESSION = [];
}
if (isset($_GET['regenerate'])) {
session_regenerate_id();
}
if (!isset($_SESSION['name'])) {
$_SESSION['name'] = 'Foo';
}
if (!isset($_SESSION['age'])) {
$_SESSION['age'] = 100;
}
if (!isset($_SESSION['current-time'])) {
$_SESSION['current-time'] = date('c', time());
}
4. メモ
session_regenerate_id()
しただけだと、前のセッションIDは有効なまま(セッションのファイルが残ったまま)なので、セッションクッキーに前の値をセットしてリクエストを送信してもセッションを続けることができる。- http: での通信を盗聴されるとセッションハイジャックされる。