※本ページにはプロモーション(広告)が含まれています
Webページに悪意あるスクリプトを埋め込み、閲覧者のブラウザで実行させる攻撃。セッション乗っ取りや改ざんを引き起こす。
詳しい解説
XSS(クロスサイトスクリプティング)は、Webサイトの入力フォームやURLパラメータ等を通じて、悪意のあるスクリプト(多くはJavaScript)をページ内に埋め込み、他のユーザーのブラウザで実行させる攻撃です。被害者のブラウザで動作するため、ログインセッション(Cookie)を盗んだり、ページ内容を改ざんしたり、偽の入力フォームを表示してIDパスワードを抜き取ったりと、多彩な被害を引き起こします。
XSSは大きく3種類に分類されます。①『反射型』はURLに埋め込んだスクリプトが表示結果に反射する一時的なもの、②『格納型(Stored)』は掲示板やコメント欄にスクリプトを書き込み、閲覧した全ユーザーに影響するもっとも危険なタイプ、③『DOMベース』はサーバーを経由せずブラウザ側のJavaScript処理で発生するものです。SNSや掲示板では格納型が拡散力を持ち、1件の投稿で数万人に影響が及ぶこともあります。
防御の基本は『出力時のエスケープ処理』です。HTMLコンテキスト・属性コンテキスト・JavaScriptコンテキスト・URLコンテキストそれぞれに応じた適切なエスケープを行い、ユーザー入力が『データ』のまま表示されるようにします。加えて、①Content Security Policy(CSP)でインラインスクリプトを禁止、②CookieにHttpOnly・Secure・SameSite属性を付与、③最新のフレームワーク(React・Vue等)の自動エスケープ機能を活用、④WAFでスクリプトタグのパターンを遮断、⑤入力バリデーションのホワイトリスト化、などを多層的に組み合わせます。
脆弱性スキャナーやバグバウンティ報告で発見されることが多く、修正は『表示処理の一箇所修正で数千ページに効果』といったケースも多いため、早期発見・早期対応のコスト効果が非常に高い分野です。
あるブログのコメント欄に攻撃者が悪意あるJavaScriptタグを書き込み、投稿を許してしまった場合、その記事を閲覧した全員のブラウザでスクリプトが実行され、ログイン中のCookieが攻撃者サーバーへ送信されてしまいます。これは格納型XSSの典型例で、表示時に特殊記号を無害化(エスケープ)していれば、スクリプトはただの文字列として表示され、攻撃は成立しません。
別の呼び方
Cross-Site Scripting
格納型XSS
反射型XSS
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!