見えるセキュリティ

XSSの基本

XSS BASICS

この概念とは?

XSS(クロスサイト・スクリプティング)は、入力の扱いに問題があるため、Webページを見ている人のブラウザで、意図しないスクリプト(プログラム)が動いてしまう問題です。まずは「表示する文字」と「動かすプログラム」の違いから、何が起きるのかを見ていきましょう。

入力がどこから来て、どの処理を通り、誰のブラウザで何が起きるのか。6つの観点でXSSの全体像を整理します。

THEME
web-vuln
KIND
attack
REVIEW
self-reviewed ·

外部から来た入力の扱いと、閲覧者のブラウザで起きることを整理します。

各STEPは理解を深めるための順番です。1回の通信を順に再現する図ではありません。

閲覧者のブラウザ

表示する内容

こんにちは

サイトが用意した動作

ボタンに応じて表示を切り替える動作

STEP 01 / 6

ページには「文字」と「動き」がある

STEP 1 / 6: ページには「文字」と「動き」がある

現在のSTEP 1STEP 2STEP 3STEP 4STEP 5STEP 6

Webページには、読む文字や画像と、操作に応じて表示を変えるプログラムがあります。HTMLはページの内容や構造を表し、JavaScriptは動きを付けるための言語です。まずは、表示する文字と動かすプログラムを分けて見てみましょう。

技術的な詳細を見る

HTMLはページの内容や構造を表すマークアップ言語です。JavaScriptは、ページの更新や操作への応答などを行います。HTMLにはスクリプトに関わる要素や属性もありますが、文字を表示するだけの処理が、必ずプログラムの実行を伴うわけではありません。

パネルの開閉ではSTEPは変わりません。

この概念の要点

  • 要点

    表示するデータと動かすコードを分ける。

    入力がどの処理へ渡され、どう解釈されるかが重要です。

  • 要点

    実行されるのは閲覧者のページ。

    そのサイトで扱う情報や操作に影響し得ますが、影響範囲は条件によります。

  • 要点

    入力の経路と処理場所は別の観点。

    反射型・蓄積型とDOMベースは、同じ事例に重なる場合があります。

  • 要点

    使う場所に合う対策を選ぶ。

    文字を表示する処理と、HTMLを許可する処理では、必要な安全化が異なります。

理解確認

この教材で扱ったXSSの説明として、適切なものはどれですか?

参考資料

RELATED CONCEPTS