2024年04月18日
クロスサイトスクリプティング(XSS)は、悪意のあるスクリプトがWebサイトに埋め込まれ、ユーザーのブラウザ上で実行されてしまう脆弱性です。主な原因はユーザーの入力値を適切にエスケープせず、HTMLに出力してしまうことにあります。
スクリプトとは、ブラウザ上で動作する簡易的なプログラムのことです。JavaScriptなどが該当し、フォームの自動補完やボタン操作など、Webページに動きを与えるために使われます。
XSSによって引き起こされる主な脅威や被害の具体例をまとめました。
Cookieが盗難されると、不正ログインが可能になるので特に気を付けたい脅威です。
分類 | 内容 | 具体例 |
---|---|---|
なりすまし | セッションハイジャック、ユーザーなりすまし | Cookieの盗難・セッショントークンの不正使用 |
情報漏洩 | ユーザーの個人情報・内部情報の窃取 | フォーム内の入力値、アカウント情報などの抜き取り |
フィッシング誘導 | 偽フォーム・偽ページへの誘導 | ログインフォームを偽装しID/PWを盗む |
ページ改ざん | 表示内容の書き換え | 管理画面や掲示板を偽の内容にすり替え |
マルウェア感染 | 外部スクリプト経由での攻撃コード配布 | Drive-by download や Cryptojacking など |
不正リクエスト送信 | 利用者の権限でAPIや管理操作を実行 | 勝手にメッセージ投稿、購入処理、設定変更など |
信用・ブランド失墜 | ユーザーへの悪影響 → サービス離れ | ユーザーからの信頼喪失、SNS炎上など |
ユーザーがアクセスしたURLに含まれる悪意のあるスクリプトが、即座にレスポンスとして返されて実行されるタイプです。
悪意のあるスクリプトがサーバーに保存され、後から他のユーザーに表示されるタイプです。被害が広範囲に及ぶ可能性があります。
サーバー側ではなく、ブラウザ上のJavaScriptがDOMを介して直接スクリプトを実行してしまうタイプです。
DOM(Document Object Model)とは、HTMLやXMLを構成する要素をプログラム上で参照・操作するための仕組みです。
XSSの主な対策をまとめました。
特に出力時の「エスケープ処理」は最も重要で有効な対策です。
すべてのユーザー入力をHTML出力する前に、適切なエスケープを施すことで悪意のあるスクリプトの実行を防ぐことができます。
文字 | エスケープ後 |
---|---|
& | & |
< | < |
> | > |
" | " |
' | ' |
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none';
X-Content-Type-Options: nosniff
X-Content-Type-Options: nosniff
CookieをJavaScriptからアクセスできないように制限することができます。これにより、Cookieの盗難を防止できます。
HTTPレスポンスヘッダのContent-Typeに文字コード(例:charset=UTF-8)を明記します。指定がない場合、ブラウザが誤った文字コード(例:UTF-7)で解釈し、意図しないスクリプト実行が発生する可能性があります。
XSSは、ユーザーとWebアプリケーションの信頼関係を悪用する非常に危険な攻撃です。特に、入力値を画面に出力する処理がある場合は状況に応じて適切にエスケープ処理を行うことが重要です。フロントエンド・バックエンドの両面からしっかりと対策を行い、安全なWebアプリケーションを構築していきましょう。
お問い合わせ
サイバー攻撃対策・脆弱性診断・インシデント対応など、
お客様のニーズに合わせた最適な
ソリューションをご提案します。
まずはお気軽にご相談ください!