0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】Webセッションって何?図解で分かるWebサイトがあなたを覚えている仕組み

0
Posted at

はじめに

Webサイトを使っているとき、こんな経験はありませんか?

  • ログインしたら、他のページに移動してもログイン状態が続いている
  • ショッピングサイトで商品をカートに入れて、別のページを見てもカートの中身が残っている
  • 一度ログインしたら、しばらく再ログインを求められない

これらは全て「セッション」という仕組みのおかげです。この記事では、Webサイトがあなたを覚えている仕組みを、図解を使って分かりやすく説明します。

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

現実世界で例えてみよう

セッションを理解するために、まず現実世界で例えてみましょう。

図書館での本の貸し出しを想像してください

あなた:「この本を借りたいです」
司書さん:「図書カードを見せてください」
あなた:図書カードを提示
司書さん:「田中さんですね。この本をお貸しします」

(数日後、別の本を借りに来た時)
あなた:「この本も借りたいです」
司書さん:「図書カードを見せてください」
あなた:図書カードを提示
司書さん:「田中さんですね。前回借りた本の返却期限は○○日です。こちらの本もお貸しします」

ここで重要なのは:

  • 図書カード = あなたを識別するもの
  • 司書さんの記録 = あなたの借用履歴を保存する場所

Webサイトでも同じことが起きている

Webサイトでも、図書館と同じようなことが起きています。

あなた(ブラウザ):「商品Aをカートに入れたい」
Webサイト:「分かりました。あなた専用の番号をお渡しします」→「ID-12345」

(別のページを見た後)
あなた(ブラウザ):「カートの中身を見たい」(ID-12345も一緒に送信)
Webサイト:「ID-12345の方ですね。商品Aが入っています」

この「ID-12345」のような番号が セッションID です!

HTTPの「物忘れ」問題

なぜセッションが必要なの?

Webサイトが使っている HTTP という通信方法には、大きな特徴があります。それは「物忘れがひどい」ことです。

HTTPの特徴:ステートレス(状態を覚えない)

リクエスト1:「商品Aをカートに入れて」
Webサーバー:「はい、入れました」(すぐに忘れる)

リクエスト2:「カートの中身を見せて」  
Webサーバー:「え?誰のカート?何のこと?」(覚えていない)

これでは困りますよね。そこで セッション の出番です!

セッションの仕組みを図解で理解しよう

1. 初回アクセス時:「初対面」の状態

あなたが初めてWebサイトにアクセスした時

  1. あなたがWebサイトにアクセス
  2. Webサイトが「初めての人だな」と認識
  3. あなた専用の番号(セッションID)を発行:「ABC123」
  4. この番号をあなたのブラウザに保存(Cookieという小さなメモ)
  5. サーバーも「ABC123の人は新規ユーザー」と記録

2. 商品をカートに追加:「覚えてもらう」

商品をカートに入れる時

  1. あなたが商品をカートに追加要求
  2. ブラウザが自動的に番号「ABC123」も一緒に送信
  3. Webサイトが「ABC123の人のカートに商品Aを追加」と記録
  4. 「追加完了」の返事

3. 別のページへ移動:「覚えている」

違うページを見た後、カートを確認

  1. カート確認のページにアクセス
  2. ブラウザが自動的に「ABC123」を送信
  3. Webサイトが記録を確認:「ABC123の人のカートには商品Aがある」
  4. カートの中身を表示

身近な例で理解するセッション

例1:ログイン状態の維持

SNSサイトでの例

ログイン前:番号なし
├─ ログインページ → ユーザー名・パスワード入力

ログイン成功:番号「XYZ789」取得
├─ この番号が「ログイン済み」の証明書
├─ プロフィールページ → 「XYZ789さん、こんにちは田中さん」
├─ 友達リストページ → 「XYZ789さんの友達一覧」  
└─ 設定ページ → 「XYZ789さんの設定」

例2:ショッピングカート

ECサイトでの例

セッション開始:番号「DEF456」取得

商品ページ:「商品Aをカート追加」
├─ サーバー記録「DEF456 → カート:商品A」

商品検索:別の商品を探す
├─ 番号「DEF456」は保持されている

商品ページ:「商品Bもカート追加」  
├─ サーバー記録「DEF456 → カート:商品A、商品B」

カート確認:
└─ 「DEF456さんのカート:商品A、商品B」

セッションIDはどこに保存される?

Cookie:ブラウザの「小さなメモ帳」

セッションIDは Cookie という仕組みでブラウザに保存されます。

Cookieって何?

  • ブラウザが保存する小さなテキストファイル
  • Webサイトごとに管理される
  • 自動的に送受信される
【あなたのブラウザのCookie】
amazon.com → SESSIONID=ABC123, 有効期限=2時間後
google.com → SESSIONID=XYZ789, 有効期限=1日後  
facebook.com → SESSIONID=DEF456, 有効期限=30日後

ブラウザの開発者ツールで確認してみよう

Chrome/Firefox/Safari共通

  1. F12キーで開発者ツールを開く
  2. 「Application」(Chrome) または「Storage」(Firefox) タブ
  3. 「Cookies」を展開
  4. サイトのドメインを選択
  5. セッション関連のCookieを確認

実際に見えるもの

名前: SESSIONID (または PHPSESSID, connect.sid等)
値: abc123def456ghi789  (ランダムな文字列)
ドメイン: example.com
有効期限: Session (ブラウザを閉じるまで)

サーバーはセッションデータをどこに保存している?

Webサイト(サーバー)側では、セッションIDと紐づく情報を保存する必要があります。

保存場所の種類

保存されるデータの例

セッションID:ABC123
├─ ユーザーID:12345
├─ ユーザー名:田中太郎
├─ ログイン時刻:2024-01-15 10:30:00
├─ カート内容:[商品A, 商品B]
├─ 最終アクセス:2024-01-15 11:15:00
└─ 権限:一般ユーザー

セッションのライフサイクル

セッションの「一生」

セッションが終わるタイミング

1. ブラウザを閉じた時

ユーザー:ブラウザを閉じる
ブラウザ:Cookieを削除(一時的なもの)
サーバー:しばらく後にデータを削除

2. 時間切れ(タイムアウト)

設定例:30分間操作がないと自動ログアウト
├─ 10:00 ログイン → セッション開始
├─ 10:15 ページ閲覧 → セッション延長  
├─ 10:45 何も操作なし → セッション継続中
└─ 10:46 ページアクセス → ログアウト(30分経過)

3. 明示的なログアウト

ユーザー:「ログアウト」ボタンをクリック
サーバー:セッションデータを削除
ブラウザ:Cookie削除

複数のタブやウィンドウはどうなる?

同じブラウザ内では共有される

重要なポイント:セッションはブラウザ単位

Chrome ブラウザ
├─ タブ1:Amazon(ログイン済み)
├─ タブ2:Amazon 商品ページ(同じログイン状態)  
└─ タブ3:Amazon カートページ(同じカート内容)

→ すべて同じセッションID「ABC123」を使用

実験してみよう

  1. Amazonなどのサイトにログイン
  2. 新しいタブでそのサイトを開く
  3. 既にログイン状態になっている!

異なるブラウザは別セッション

Chrome:Amazon ログイン状態(セッションID:ABC123)
Firefox:Amazon 未ログイン状態(セッションID:なし)

→ ブラウザが違うと別のセッション

セキュリティ:セッションの安全性

よくある危険とその対策

1. セッションハイジャック(乗っ取り)

危険な例

カフェの無料Wi-Fi使用中
悪い人:通信を盗聴してセッションIDを取得「ABC123」
悪い人:取得したIDを使ってあなたになりすまし

対策:HTTPS通信

HTTP:通信が丸見え(危険)
HTTPS:通信が暗号化(安全)

安全なサイトの確認方法:
URL が https:// で始まっている
ブラウザのアドレスバーに鍵マークが表示

2. セッション固定攻撃

危険な例

悪い人:「このリンクをクリックして」→ site.com?sessionid=EVIL123
あなた:クリックしてログイン
悪い人:EVIL123を使ってあなたのアカウントにアクセス

対策:ログイン時にID再生成

ログイン前:セッションID = TEMPORARY456
ログイン成功後:新しいセッションID = SECURE789 に変更
→ 古いIDは無効になる

よくある質問(FAQ)

Q1: セッションが切れるのはなぜ?

A: 主に以下の理由があります

  • セキュリティ: 長時間放置されたセッションは乗っ取りリスクが高い
  • リソース節約: サーバーのメモリを節約するため
  • 一般的な設定: 30分〜2時間で自動ログアウトが多い

Q2: プライベートブラウジング(シークレットモード)だとどうなる?

A: より安全ですが、基本は同じ

通常モード:Cookie は永続保存される可能性
シークレットモード:ブラウザを閉じると Cookie は確実に削除

Q3: スマートフォンのアプリはどうなの?

A: Webブラウザではなく専用アプリの場合

Webサイト:Cookie を使ったセッション管理
スマホアプリ:アプリ内に専用の認証情報を保存
→ 仕組みは似ているが、実装方法が違う

Q4: 「ログイン状態を保持する」チェックボックスって何?

A: セッションの有効期限を延長する機能

チェックなし:ブラウザを閉じるとログアウト
チェックあり:2週間〜1ヶ月間ログイン状態維持

実際に確認してみよう

実習:セッションの動きを観察

用意するもの

  • パソコンのWebブラウザ
  • お気に入りのWebサイト(Amazon、Twitter等)

実習手順

1. セッションの開始を確認

1. シークレットモードで Amazon を開く
2. F12 で開発者ツールを開く
3. Network タブをチェック
4. ページを読み込み
5. Response Headers で「Set-Cookie」を確認
   → セッションIDが送られてきている

2. セッションの継続を確認

1. 商品を検索して別のページに移動
2. Network タブで Request Headers の「Cookie」を確認
   → 先ほどのセッションIDが送られている
3. カートに商品を追加
4. 別のページに移動してもカートが維持されることを確認

3. セッションの終了を確認

1. ブラウザを完全に閉じる
2. 再度サイトを開く
3. カートが空になっていることを確認
   → セッションが終了している

まとめ

セッション管理は、Webサイトがあなたを「覚えている」ための重要な仕組みです。

重要なポイント

  • セッションID = あなたを識別する番号(図書館の図書カードのようなもの)
  • Cookie = ブラウザがセッションIDを保存する場所
  • サーバー側保存 = あなたの情報を記録している場所
  • セキュリティ = HTTPS通信と適切な設定が重要
  • 有効期限 = 安全のために一定時間で自動切断

身近な体験で理解しよう

次回Webサイトを使う時は、こんなことを意識してみてください:

  • ログインした瞬間:「セッションIDをもらった!」
  • 別のページに移動:「セッションIDを提示して本人確認」
  • カートに商品追加:「セッションIDと一緒に『商品A追加』と記録」
  • ブラウザを閉じる:「セッション終了、また今度!」

セッションの仕組みを理解すると、Webサイトの動作がより身近に感じられ、セキュリティ意識も高まります。安全で快適なWebライフを楽しんでください!

さらに学習したい方へ

  • Web開発に興味がある: HTMLとJavaScriptから始めてみましょう
  • セキュリティが気になる: HTTPS、Cookie設定について調べてみましょう
  • 技術的な詳細を知りたい: HTTP/HTTPSプロトコルについて学習してみましょう

この記事がWebセッションの理解の第一歩になれば幸いです!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?