XSS(クロスサイトスクリプティング)には主に反射型(Reflective XSS)と蓄積型(Stored XSS)の2種類があります

XSS(クロスサイトスクリプティング)には主に反射型(Reflective XSS)と蓄積型(Stored XSS)の2種類があります。これらの違いについて簡単に説明します。

1. 反射型XSS(Reflective XSS)

反射型XSSは、攻撃コードがユーザーから送信されたリクエストに応じてサーバーが動的に生成するレスポンスに組み込まれるタイプの攻撃です。リクエストに含まれる悪意のあるスクリプトが、サーバーでそのままレスポンスとして反映され、ユーザーのブラウザで実行されます。

  • 仕組み: 攻撃者は悪意のあるリンクを作成し、ユーザーにクリックさせます。リンクには攻撃スクリプトが含まれており、そのスクリプトがリクエストに含まれてサーバーに送信されます。サーバーがリクエストをそのまま反映してレスポンスを返す場合、スクリプトがユーザーのブラウザで実行されます。
  • : ユーザーが攻撃者の用意したURLをクリックすることでスクリプトが実行される。
  http://example.com/search?query=<script>alert('XSS')</script>

サーバーがqueryパラメータをそのままページに表示すると、スクリプトが実行される。

  • 特徴: 攻撃は通常、一時的であり、特定のリクエストを通じて発生する。攻撃者はユーザーに悪意のあるリンクを踏ませる必要がある。

2. 蓄積型XSS(Stored XSS)

蓄積型XSSは、攻撃者が悪意のあるスクリプトをサーバーに送信し、それがデータベースなどに保存され、後で他のユーザーがそのデータを閲覧する際にスクリプトが実行されるタイプの攻撃です。

  • 仕組み: 攻撃者は悪意のあるスクリプトを投稿フォームやコメント欄に入力し、それがサーバーに保存されます。別のユーザーがそのページにアクセスした際、保存されたスクリプトがユーザーのブラウザで実行されます。
  • : Webサイトのコメント欄に攻撃スクリプトを投稿し、他のユーザーがページを閲覧したときにスクリプトが実行される。
  <script>alert('Stored XSS')</script>

これがデータベースに保存され、表示時にユーザーのブラウザで実行されます。

  • 特徴: 攻撃コードがサーバー側に保存されているため、一度攻撃が成功すると継続的に他のユーザーが影響を受ける可能性がある。

違いのまとめ

  • 反射型XSSは、ユーザーのリクエストに応じてスクリプトが即座に実行され、一時的です。
  • 蓄積型XSSは、攻撃コードがサーバーに保存され、複数のユーザーに対して継続的に影響を及ぼします。

どちらのタイプも適切な入力バリデーションやエスケープ処理によって防ぐことができます。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。