HTTPセッションについて調べたことまとめ

そもそもセッションって何?

通常HTTPでは、リクエスト⇒レスポンスの1往復で通信が独立している。 セッションを導入することで、複数回の通信を連続的なものとして扱うことが出来る。

このセッションの考え方によりログイン⇒ログアウトの間、ユーザーを識別することができる。

具体的な処理

ログイン通信

ログイン後の全ての通信

クライアントがサーバにセッションIDを送るための2つの方法

Cookieにセッションを使えない状況

ちなみに下記のような状況ではCookieをセッション管理に使えない

サーバアプリケーションががセッションを保存する方法

サーバがセッションを保存する方法もいくつか設定がある。

[Session]
;ファイルとして保存
session.save_handler = files
;デフォルトは下記のパスに保存される。
session.save_path = "/tmp"

私のPHPのWEBアプリケーション環境では下記のファイル名で保存されていた。

sess_[セッションID]

例)

$ ls /tmp/
sess_5bfb12d1c31eb5769b304e2b34f5215e

またアプリケーションサーバが複数台にわかれている環境などでセッションを引き継ぎたい場合は(普通そうだと思うが)ローカルのファイルではなくmemcachedなどに保存する。

[Session]
;memcacheに保存
session.save_handler = memcache
;保存先は専用のmemcachedサーバ
session.save_path = "tcp://[IPアドレス]:11211"

参考

https://www.ipa.go.jp/security/awareness/administrator/secure-web/chap6/6_session-1.html

http://oku.edu.mie-u.ac.jp/~okumura/php/session.php