0
0

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アプリケーションのセッションとは?仕組みと安全な管理方法

Posted at

はじめに

HTTPはステートレスなプロトコルです。
つまり、1回のリクエストとレスポンスの間に状態を保持しません。
しかしWebアプリでは「ログイン状態の維持」や「カート情報の保持」など、継続的な状態管理が必要です。
そのために使われる仕組みが セッション(Session) です。


1. セッションの目的

  • ユーザー識別

    • 同じブラウザからの一連のリクエストをひも付ける
  • 状態管理

    • ログイン状態、ショッピングカート、入力フォームの一時保存
  • セキュリティ

    • 認証後の状態を安全に保持し、不正アクセスを防ぐ

2. セッションの仕組み(基本フロー)

3. セッションIDの管理方法

方法 説明 利点 注意点
Cookieベース CookieにセッションIDを保存 標準的・自動送信 HttpOnly/Secure必須
URL埋め込み URLパラメータにIDを付加 Cookie無効環境でも可 リンク共有で漏えいリスク大
Web Storage localStorage/sessionStorageに保存 手動制御可能 XSSに弱い

4. セキュリティリスクと対策

リスク

  • セッションハイジャック:IDが盗まれ、なりすまされる

  • セッション固定攻撃:攻撃者が予測可能なIDを利用

  • XSSや盗聴によるCookie漏えい

対策

  • セッションIDを十分に長く・ランダムに生成

  • HTTPSを必須化しSecure属性を設定

  • HttpOnly属性でJSからのアクセスを禁止

  • SameSite属性でCSRFを防止

  • ログインや権限昇格時にセッションID再生成

  • 一定時間操作がない場合は自動タイムアウト

5. セッション方式とJWTの比較

項目 セッション方式 JWT方式
状態保持 サーバ側 クライアント側(トークン内)
無効化 サーバ側で即時可能 トークン期限切れまで有効
主な用途 従来型Webアプリ SPA / API認証

まとめ

  • Webアプリのセッションはユーザー状態を安全に維持するための仕組み

  • 安全な運用にはHTTPS+Cookie属性設定+ID再生成+期限管理が必須

  • モダンアプリではJWTとの比較検討も重要

参考リンク:

OWASP Session Management Cheat Sheet

MDN Web Docs – HTTP Cookies

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?