Tech Hotoke Blog

IT観音とは私のことです。

【ネットワーク】SessionとCookieについて

What is this?

Sessionと Cookieについて言語化して整理したもの。メモ書き。

assumption

HTTP通信における話に焦点が当たりがち

Cookie

  • Webブラウザに保存されたデータのこと
  • CookieはサーバーからのHTTPレスポンスのSet-Cookieヘッダーを使用してWebブラウザに送られ、テキストファイル形式で保存される
  • 保存されたCookieはクライアントからサーバーにリクエストするたびに自動送信される
  • 有効期限が設定されていないCookieは、Webブラウザが閉じられると一緒に削除される(「セッションCookie」とも言う)
  • 有効期限が設定されたCookieは、期限が過ぎるまではWebブラウザを閉じても削除されない
  • 「クッキー名=値」の形(1つのクッキーは4KBまで)
  • HTML DOMの一部としてアクセスできる
  • Session IDをCookieに格納する用途で使用されることが多い

Session

  • 一連の処理の始まりから終わりまでを表す概念(HTTP通信においては通信の確立から遮断までを指す)
  • セッション情報はサーバーに保存されることが多い
  • セッションはWebブラウザを閉じるまで保存する
  • リンクなどでページを移動しても内容を保持することができる

HTTPにおけるSessionとCookie

CookieにSession IDを格納することで、HTTPにステートフルな性質を持たせることを実現している。 HTTPはサーバーが一連の処理の状態などを記憶しないという性質(ステートレス)を持っているため、ログイン情報を記憶させる、ショッピングカートの商品情報を記憶させることが出来ない。

Sessionがそれらの情報を記憶して、CookieにSession IDを格納することでHTTP通信においてサーバーが一連の処理の状態などを記憶する性質(ステートフル)を付与することができる。

セキュリティ

  • セッションハイジャック:Session IDを第三者が傍受することで、Sessionが保持している認証情報などを使ってなりすますことができる
  • ラッキング・クッキー:Cookieはそのユーザからの他の要求と関連付けることができる。インターネット広告の配信において、バナー広告は、業者のサーバ(サードパーティー)へのリンクを介して画像を取得する形式が一般的である。クッキーはHTMLに限らず、画像にも設定することができる。HTTPではリンク元のURL情報も送信することが一般的なので、結果として広告業者は、同社を利用するすべてのサイトを対象としてそのユーザのアクセス履歴を把握することが可能になる。

参考