XSS(クロスサイトスクリプティング)とは
XSSとは、Webサイトの入力欄やURLなどを通じて悪意のあるスクリプトを埋め込み、そのページを見た利用者のブラウザ上で実行させる攻撃のことです。
たとえるなら、掲示板に「読んだ人の財布を抜き取る仕掛け」を貼り付けておくようなものです。サイト自体は正規のものなので、利用者は疑わずにページを開き、ブラウザが仕掛けを実行してしまいます。正式名称は Cross-Site Scripting で、略称がCSSだとスタイルシートのCSSと紛らわしいため、交差(Cross)をXで表してXSSと呼ばれています。
仕組みと攻撃の種類
XSSが起きる根本の原因は、利用者が入力した文字列を、Webページの一部としてそのまま表示してしまうことです。本来は「文字」として表示すべきものが、ブラウザに「プログラム」として解釈されてしまいます。
| 種類 | 仕組み | 典型的な場面 |
|---|---|---|
| 反射型 | URLなどに仕込んだスクリプトが、そのまま画面に返されて実行される | 検索結果ページ、エラーメッセージ |
| 格納型(持続型) | 投稿内容などとして保存され、表示するたびに実行される | 掲示板、レビュー、プロフィール、問い合わせ管理画面 |
| DOM型 | ブラウザ側のJavaScriptが入力を不適切に処理して実行される | 画面上で動的に表示を書き換える機能 |
どんな被害が起きるか
- ログイン状態を示す情報(セッション情報)を盗まれ、なりすましでログインされる
- 偽の入力フォームを表示され、パスワードやカード情報を入力させられる
- 利用者の権限で、勝手に投稿や設定変更をされる
- 管理画面で実行された場合、管理者権限で操作される
特に注意が必要なのは、利用者が投稿した内容を社内の管理画面で表示する場面です。問い合わせフォームに仕込まれたスクリプトが、担当者が管理画面を開いた瞬間に実行される、という形で、権限の強いアカウントが狙われます。
実務での使い方・具体例
開発での基本的な対策
- 出力時のエスケープ:画面に表示するときに、記号を「文字」として扱う形に変換する。これが最も基本の対策です。
- フレームワークの標準機能を使う:ReactやLaravelなど多くのフレームワークは、標準でエスケープを行います。それを無効にする書き方をむやみに使わないことが大切です。
- HTMLを許可する入力は特に慎重に:リッチテキストの投稿など、HTMLを受け付ける場合は、許可するタグを限定する仕組みを使います。
- Cookieの設定:ログイン情報を持つCookieにスクリプトから読めない設定をして、被害を小さくします。
- コンテンツセキュリティポリシー(CSP):読み込めるスクリプトの出どころを制限し、万一の際の被害を抑えます。
架空の例:問い合わせ管理画面での発見
ある通販サイト(架空)で、脆弱性診断を受けたところ、問い合わせ内容を表示する社内の管理画面にXSSの脆弱性が見つかりました。顧客向け画面ではフレームワークの標準機能で表示していた一方、管理画面は古いコードのまま、入力値を加工せずに表示していたのが原因です。修正とあわせて、管理画面も含めて診断の対象とする運用に改めました。
発注側が確認すること
- 開発会社がXSSを含む主要な脆弱性への対策方針を持っているか
- 管理画面や社内向けの画面も対策と検査の対象に入っているか
- 公開前やリリースごとに脆弱性診断を行う計画があるか
開発会社とのやり取りで役立つ観点
脆弱性診断の報告書でXSSが指摘された場合は、該当箇所の修正だけで終わらせず、同じ書き方をしている箇所がほかにないかを確認してもらうことが大切です。一つ見つかった脆弱性は、同じ担当者や同じ時期に作られた別の画面にも潜んでいることが多いためです。修正後には再診断で効果を確かめる流れを、あらかじめ計画に入れておくと安心です。
よくある誤解と注意点
- 入力チェックだけでは防げない:入力時に記号を弾くだけでは漏れが出ます。基本は「表示するときに安全な形に変換する」ことです。
- 社内システムだから安全、ではない:外部の入力を表示する画面があれば、社内向けでも攻撃の入口になります。
- フレームワークを使っていても油断しない:あえて生のHTMLを表示する機能を使った箇所が狙われます。
- 一度対策すれば終わりではない:機能追加のたびに新しい表示箇所が生まれます。コードレビューと定期的な診断が必要です。
関連用語
- CSRF(クロスサイトリクエストフォージェリ):利用者に意図しない操作をさせる、XSSと並ぶ代表的な攻撃
- フロントエンド:XSS対策の多くが関わる、画面側の開発領域
- フレームワーク:標準でエスケープ機能を備えることが多い開発の土台
- コードレビュー:危険な表示処理を見つける機会の一つ
- セキュリティチェックシート:脆弱性対策の状況を問われる確認書類
発注時に指定すべき項目は外注開発のセキュリティ要件で解説しています。
Otsumuに相談できること
XSSは古くから知られた攻撃ですが、管理画面や古いコードなど、目の届きにくい場所に残りやすい脆弱性です。Otsumuでは、フレームワークの標準機能を活かした開発と、管理画面を含めたレビューを基本にしています。新規開発はシステム開発、既存システムの点検や改修は保守・運用のページをご覧ください。
脆弱性診断で指摘を受けて対応に困っている場合も、30分の無料相談でご相談ください。
執筆:Otsumu株式会社 / 編集日 2026.10.01