セキュリティ・認証の用語一覧へ
このページの目次
セキュリティ・認証初級図解あり

セッションとは?

読み方:セッション

最終更新:2026/08/18

3秒でわかる

サーバー側が利用者ごとの状態を覚えておく仕組み。毎回接続が切れるHTTPでもログイン状態を続けさせるために、識別子をブラウザへ預けて紐づけます。

30秒図解

セッションはブラウザへ推測できない識別子だけを預け、userId 42などの利用者状態をサーバー側で保持する仕組み
セッションIDは運ぶ鍵であり、利用者状態の中身はサーバー側に置きます。

もう少し詳しく

どういうものか

セッションは、サーバーが利用者ごとの一時的な状態を覚えておく仕組みです。ログインが成功した時点でサーバーがセッションを作り、そこに利用者 ID などを記録し、識別子であるセッション ID だけを Cookie としてブラウザに返します。以降のリクエストにはその Cookie が自動で付くので、サーバーは ID を手掛かりに「これは誰からのリクエストか」を判断できます。

なぜ必要か

HTTP は一回のやり取りが終わると相手を忘れる設計です。この性質のままだと、ページを移動するたびにログインし直すことになります。かといって利用者 ID をそのまま Cookie に入れると、値を書き換えるだけで他人になりすませてしまいます。推測できないセッション ID だけを渡し、中身はサーバーが持つことで、この問題を避けています。

具体例

import express from "express"; import session from "express-session"; const app = express(); <a href="/glossary/app-use" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">app.use</a>(session({ secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: false, cookie: { httpOnly: true, secure: true, sameSite: "lax", maxAge: 1800000 }, })); app.post("/login", (req, res) => { // 認証が通ったとして req.session.regenerate(() => { req.session.userId = 42; res.redirect("/mypage"); }); }); app.post("/logout", (req, res) => { req.session.destroy(() => res.redirect("/")); });

httpOnly は JavaScript から Cookie を読めなくする指定、secure は HTTPS のときだけ送る指定です。

似た用語との違い

状態の置き場所取り消し
セッションサーバー側サーバーで消せば即時
Cookieブラウザ側運ぶ入れ物そのもの
JWTトークン内部(署名付き)期限切れまで有効になりがち


つまずきやすいところ

ログイン成功時にセッション ID を作り直さないと、攻撃者があらかじめ用意した ID を被害者に使わせるセッションフィクセーションが成立します。上の例で regenerate を呼んでいるのはこのためです。もう一つ多いのが、サーバーを複数台に増やしたとたんに「たまにログアウトする」という症状です。既定のセッション保存先がプロセスのメモリなので、別の台に振り分けられると相手を知らないまま扱われます。Redis など共有の保存先に移すか、振り分けを固定して解決します。

次に学ぶ

JWTとは?

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地セッションセキュリティ

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

この用語を扱うコース

コース

Node.js入門

55レッスン
コース

Express道場 fleama開発室のIssue10件

10レッスン
コース

モダンJavaScript:データ処理とコード設計

36レッスン
Node.jsコースの全編を見る