PHP: http: と https: で使えるセッションクッキーを観察する
1. このページの目的
http: と https: で使えるセッションクッキー(PHP)を観察する。
つまり secure属性のないセッションクッキーである。
2. 値を表示する
2.1. 追加機能
- セッション変数をクリアする
- セッションIDを新しく振る(セッション内のデータは維持される)
2.2. 各種値の出力
PHPSESSID
Set-Cookie: PHPSESSID=36d26f1ca191552359382cf70781b370; path=/; HttpOnly; SameSite=lax
36d26f1ca191552359382cf70781b370
- パラメータ
session_regenerate_id
を付けると新しい session_id が振られる。
2024-12-22T14:41:18+09:00
'name|s:3:"Foo";age|i:100;current-time|s:25:"2024-12-22T14:41:18+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: での通信を盗聴されるとセッションハイジャックされる。