Stored XSSとReflected XSSの違い
Stored XSS(永続型XSS)とReflected XSS(反射型XSS)は、どちらもクロスサイトスクリプティング攻撃(XSS)の一種ですが、その動作の仕組みと影響の範囲に大きな違いがあります。以下にそれぞれの特徴と違いを解説します。
Stored XSS(永続型XSS)
特徴:
- 攻撃者が悪意のあるスクリプトをWebアプリケーションのデータベースやメッセージフォーラム、訪問者ログなどに保存します。
- このスクリプトは、そのページにアクセスするすべてのユーザーに対して実行されます。
- 一度注入されると、複数のユーザーに対して影響を与え続けるため、特に危険です。
例:
攻撃者がコメント欄にJavaScriptコードを含むコメントを投稿し、そのコメントが他の訪問者に表示されるたびにスクリプトが実行される。
Reflected XSS(反射型XSS)
特徴:
- 攻撃者が作成した悪意のあるスクリプトが含まれたリンクをクリックすることで、ユーザーのブラウザを通じてそのスクリプトが実行されます。
- スクリプトはサーバーに保存されず、リンクをクリックしたユーザーに対してのみ影響を及ぼします。
- 攻撃は一時的であり、一人のユーザーに対してのみ実行されることが多いです。
例:
攻撃者が「検索結果」ページにおいて、検索クエリの一部としてJavaScriptコードを挿入し、そのリンクをユーザーにクリックさせる。
違いのまとめ
- 持続性: Stored XSSはデータベースなどにデータが保存されるため、永続的に影響を及ぼす可能性があります。一方、Reflected XSSは一時的であり、特定のリクエストにのみ影響します。
- 影響の範囲: Stored XSSは多くのユーザーに影響を及ぼす可能性がありますが、Reflected XSSはリンクをクリックした個々のユーザーにのみ影響します。
- 発動条件: Stored XSSは特定のページにアクセスするだけで発動しますが、Reflected XSSはユーザーが特定のリンクをクリックする必要があります。
それぞれのXSSタイプは異なる対策が必要であり、ウェブアプリケーションのセキュリティを確保するためには、入力の検証とエスケープ、セキュアなプログラミング慣行の適用が重要です。