【セキュリティ】閲覧者のブラウザを操る!「クロスサイトスクリプティング」|情報処理問題1000本ノック
Webサイトの脆弱性を突き、正規の利用者のブラウザ上で悪意のあるスクリプトを実行させる攻撃手法。その仕組みと対策を攻略しましょう。
1. 問題:Webアプリケーションの脆弱性
【 問題 】 Webアプリケーションの脆弱性を利用し、サイトの訪問者のブラウザ上で意図しないJavaScriptなどのスクリプトを実行させる攻撃手法はどれでしょうか?
ア、クロスサイトスクリプティング(XSS) イ、SQLインジェクション ウ、コマンドインジェクション エ、セッションハイジャック
2. 正解:Webセキュリティに関する正解
正解: ア、クロスサイトスクリプティング(XSS)
3. 解説:罠を仕掛けて「他人のブラウザ」で実行
XSSは、Webサイトへの入力内容をそのまま画面に表示してしまう不備を突く攻撃です。
【図解:クロスサイトスクリプティングの仕組み】
■ 攻撃の流れ
1. 攻撃者が、掲示板などの入力欄に悪意のあるスクリプト(例:
2. 脆弱なサイトは、そのスクリプトを「データ」ではなく「プログラムの一部」として保存・表示してしまいます。
3. 一般の閲覧者がそのページを開くと、閲覧者のブラウザ上でそのスクリプトが自動的に実行されます。
■ 被害の例
・Cookie情報(セッションID)が盗まれ、なりすましが行われる。
・偽の入力フォームを表示させ、パスワードを盗み出す(フィッシング)。
■ 攻撃の流れ
1. 攻撃者が、掲示板などの入力欄に悪意のあるスクリプト(例:
<script>...</script>)を書き込みます。2. 脆弱なサイトは、そのスクリプトを「データ」ではなく「プログラムの一部」として保存・表示してしまいます。
3. 一般の閲覧者がそのページを開くと、閲覧者のブラウザ上でそのスクリプトが自動的に実行されます。
■ 被害の例
・Cookie情報(セッションID)が盗まれ、なりすましが行われる。
・偽の入力フォームを表示させ、パスワードを盗み出す(フィッシング)。
[ 他の選択肢との違い ]
★ SQLインジェクション:データベース(DB)を不正に操作する。
★ コマンドインジェクション:OSのコマンドを不正に実行させる。
★ セッションハイジャック:通信中のセッションIDを奪って本人になりすます。
★ SQLインジェクション:データベース(DB)を不正に操作する。
★ コマンドインジェクション:OSのコマンドを不正に実行させる。
★ セッションハイジャック:通信中のセッションIDを奪って本人になりすます。
1. 理解のコツ: サイトそのものを壊すのではなく、サイトを「罠の設置場所」として利用し、サイトを見に来た一般ユーザーを攻撃するのがXSSの特徴です。
2. 試験対策の視点: 「ブラウザ上でスクリプトを実行」というフレーズがあればXSSです。対策として「サニタイジング(無害化)」や「エスケープ処理(< を < に変換するなど)」という用語もセットで覚えましょう。
4. まとめ
「Webアプリケーションの脆弱性を突き、意図しないスクリプトを実行させる」。これがクロスサイトスクリプティング(XSS)です。ユーザーの個人情報を守るために、開発者が最も警戒すべき脆弱性の一つです。
PR