クロスサイトスクリプティング(XSS)とは?
5つの対策・事例を解説

Webサイトの脆弱性を狙ったサイバー攻撃の一つである「クロスサイトスクリプティング(XSS)」。比較的古くから使用されている手法で、Webサイトの改ざん、個人情報やCookie情報の窃取、マルウェア感染など、現在でも多くの被害が報告されています。
今回は、クロスサイトスクリプティングの仕組みや種類、被害事例、対策方法について詳しく説明します。

今回のお悩み
Webサイトが狙われるサイバー攻撃に、クロスサイトスクリプティング(XSS)というものがあると聞いたが、どのようなものなのか。攻撃の仕組みや被害の事例、対策方法が知りたい。

私が解説します!
インターネットが普及し、今やWebサイトにアクセスしない日はないほど、私たちの生活に深く関わっています。一方で、Webサイトを悪用したサイバー攻撃も後を絶たず、被害は年々増加しています。サイバー攻撃の一種であるクロスサイトスクリプティング(XSS)の仕組みや種類を理解し、リスクを軽減するための対策を講じましょう。

( 1 ) クロスサイトスクリプティング(XSS)とは?

クロスサイトスクリプティング(XSS)とは、Webサイトの脆弱性を突いて罠を仕掛け、ユーザーの個人情報の窃取などを行うサイバー攻撃です。罠を仕掛けたサイトから別のサイトに誘導して(クロスして)攻撃することから、クロスサイトスクリプティングと名付けられ、「Cross Site Scripting」の略として「XSS」とも表記されます。

古くから用いられている手法ですが、現在でも多くの被害が報告されています。IPAが公開している「ソフトウェア等の脆弱性関連情報に関する届出状況2025年第2四半期(4月~6月)」によると、Webサイトの脆弱性の種類別届出件数は、クロスサイトスクリプティングが最も多く、累計では全体の57%を占めているという結果が出ています。

参照:IPA(独立行政法人情報処理推進機構)「ソフトウェア等の脆弱性関連情報に関する届出状況[2025年第2四半期(4月~6月)]」

クロスサイトスクリプティング(XSS)の仕組み

クロスサイトスクリプティングは、攻撃者がWebサイトに悪意のあるスクリプト(※1)を埋め込んだ罠を仕掛けます。例えば、個人情報の入力画面や掲示板、アンケートサイトなどに仕掛けられることが多く、このWebサイトをユーザーが閲覧し、リンクをクリックすると標的となるWebサイトに誘導されます。

ユーザーのブラウザ上でスクリプトが実行されると、個人情報や保存されているCookie情報の窃取、SNSアカウントの乗っ取り、マルウェア感染など、さまざまな被害が発生します。クロスサイトスクリプティング攻撃が発生しやすいページの特徴として、以下のような機能が備わっているWebサイトが挙げられます。

  • 入力内容を確認する表示画面(会員登録、アンケートなど)
  • 誤入力時に再入力を求める画面で、前の入力内容を表示する機能
  • 検索結果の表示機能
  • エラーメッセージの表示機能
  • コメントの反映機能(ブログ、掲示板など)
クロスサイトスクリプティングの仕組み ※1 スクリプト:原稿や台本、脚本などを意味する英単語。IT分野では簡易的なプログラムのことを指す。

( 2 ) クロスサイトスクリプティング(XSS)の種類

クロスサイトスクリプティングの攻撃の種類は、主に以下の3種類があります。

反射型XSS(Reflected XSS)

基本的なクロスサイトスクリプティングの手法で、リクエストに含まれるスクリプトがユーザーにそのまま戻されます。攻撃者は不正なスクリプトを含んだリンクを偽サイトなどに用意し、脆弱性のあるサイトに誘導。ユーザーのブラウザで不正なスクリプトが実行され、さまざまな情報の窃取が行われます。反射型XSSは、攻撃者が特別に作成したリンクをユーザーがクリックすることで発生します。そのため、フィッシングメールやSNSでの拡散といったソーシャルエンジニアリングと組み合わせて利用されることが多いのが特徴です。

格納型XSS(Stored XSS)/持続型XSS(Persistent XSS)

あらかじめ攻撃者がWebサイトにスクリプトを格納しておくという手法です。ユーザーが該当するサイトやページにアクセスするごとに不正なスクリプトが実行されるため、多くのユーザーが被害を受ける可能性があります。格納型XSSは、掲示板やコメント欄、ブログなど、ユーザー投稿機能を持つWebサイトでよく見られます。攻撃者が悪意のあるスクリプトを投稿し、それが適切にサニタイズ(※2)されないままデータベースに保存されることで、後からそのページを閲覧したユーザーが被害を受ける可能性があります。

※2 サニタイズ:Webサイトやアプリケーションにおいて、ユーザーからの入力データに含まれる特殊文字や悪意のあるコードを無害なものに変換する処理のこと

DOM Based XSS

Webサイト上の脆弱性を攻撃するものとは異なり、DOM(Document Object Model)はJavaScriptのスクリプト脆弱性を悪用します。サーバ側ではなくクライアントのブラウザ上で攻撃用のスクリプトが実行されます。URLのフラグメント(#以降の部分)やlocation.searchなどのクライアント側の情報を不適切に処理することで発生します。

( 3 ) クロスサイトスクリプティング(XSS)による被害事例

クロスサイトスクリプティングによる被害として、主に以下の4つがあります。

  • 正規サイト上に偽情報を表示
  • 個人情報の漏洩
  • Cookie情報の窃取
  • マルウェア感染

クロスサイトスクリプティングによって正規のWebサイト上に偽の情報が表示され、入力フォームなどに入力した個人情報が漏洩します。Cookie情報には閲覧履歴やID、パスワードが含まれるため、クレジットカードの不正利用や、ネットバンキングからの不正出金などの被害にもつながります。

また、リンクをクリックすることで不正なプログラムがダウンロードされ、マルウェアに感染することもあるため注意が必要です。

クロスサイトスクリプティングによる被害

クロスサイトスクリプティング(XSS)に関する2つの事例

企業において、実際にクロスサイトスクリプティングに関する事例を紹介します。

事例①/大手ITベンダーが提供するサービスへの攻撃

国内の大手ITベンダーが提供するSaaS型のECサイト構築サービスの基幹サーバが、クロスサイトスクリプティングによるサイバー攻撃を受けました。このサービスを利用する10社以上のECサイトから顧客情報43万件以上が流出し、クレジットカードの不正利用などの被害も発生しました。サービスを提供していた企業は、すべてのサーバに再発防止の対策を行いました。

事例②/世界的な衣料品大手企業のアプリに脆弱性が発覚

誰もが知る世界的な衣料品の製造小売の大手企業が提供するアプリに、クロスサイトスクリプティングの脆弱性があること判明し、脆弱性情報対策データベース(JVN iPedia)による注意喚起がなされました。企業側の迅速な対応によって脆弱性は修正されましたが、被害を受けるリスクが表面化しました。

( 4 ) クロスサイトスクリプティング(XSS)への5つの対策

クロスサイトスクリプティングにおける効果的な対策として、以下の5つをご紹介します。

スクリプトの無害化を行う(サニタイジング)

「サニタイジング」と呼ばれる対策で、クロスサイトスクリプティングに使用される危険な文字を無害なHTMLエンティティ(※3)に置き換えます。具体的には、「<」、「>」、「&」、「"」などの特殊文字を、それぞれ「&#060;」、「&#062;」、「&#038;」、「&#034;」などのHTMLエンティティに変換します。これにより、スクリプトの意図しない動きを防ぎます。エスケープ処理とも呼ばれます。

※3 HTMLエンティティ: HTMLで特別な意味を持つ文字を表現する方法。HTMLでは、特殊文字をそのまま書き込めないためHTMLエンティティを用いる。

入力値を制限する

不正なスクリプトの埋め込みを防ぐため、入力値に制限を設けます。例えば、パスワード入力欄は半角英数8文字まで、電話番号や郵便番号の入力欄は数字のみに制限し、不正なスクリプトを入力できないようにします。入力値の制限は、ホワイトリスト方式で実装することが重要です。許可する文字の種類や文字数をあらかじめ明確に定義し、それ以外の入力は受け付けないようにすることで、クロスサイトスクリプティング攻撃のリスクを大幅に軽減できます。

特定のURLのみ許可する

不正なスクリプトを実行できないようにURLの出力を制限します。「http」および「https」から始まるURLのみ出力を許可するよう設定し、ほかのスクリプトは拒否します。「javascriptスキーム」などが含まれるURLは不正なスクリプトが実行されるリスクがあります。URLの検証は、正規表現を使用して「http://」または「https://」で始まるURLのみを許可し、「javascript:」「data:」「vbscript:」などのスキームを含むURLは拒否するよう実装します。

動作環境を最新に保つ

セキュリティ対策の基本である、動作環境を常に最新の状態に保つことは、クロスサイトスクリプティングの対策としても有効です。ブラウザやサーバ、ソフトウェアなどを定期的にアップデートし、脆弱性を解消しておきましょう。特に、Webアプリケーションフレームワークやライブラリについては、セキュリティパッチが定期的にリリースされているため、最新版への更新を怠らないことが重要です。

WAFを設置する

セキュリティツールの導入も簡単で効果的な方法の一つです。WAF(Web Application Firewall)は、Webアプリケーションのセキュリティを強化するツールで、不正なアクセスや攻撃を検知・ブロックする機能を備えています。WAFは、HTTPリクエストの内容を解析し、クロスサイトスクリプティング攻撃のパターンを検出してブロックします。クラウド型WAFやオンプレミス型WAFなど、さまざまな形態があり、企業の規模や要件に応じて選択することができます。

クロスサイトスクリプティング(XSS)がWebアプリケーションに及ぼす影響

クロスサイトスクリプティングは、Webアプリケーションの機能や信頼性に深刻な影響を与える可能性があります。ユーザーの個人情報漏洩だけでなく、企業の信頼失墜、法的責任の発生、経済的損失など、広範囲にわたるリスクを引き起こすおそれがあります。個人情報保護法やGDPRなどの規制が強化される中、適切なセキュリティ対策を講じることは企業にとって不可欠です。

クロスサイトスクリプティング以外にも対応するUTM

WAF以外にも、クロスサイトスクリプティングの対策に有効なツールとしてUTMがあります。UTM(Unified Threat Management)は「統合脅威管理」と呼ばれ、1台に複数のセキュリティ機能を備えているので、クロスサイトスクリプティング以外のサイバー攻撃の対策も可能です。

日々複雑化・巧妙化するサイバー攻撃は多種多様で、これらに個別に対応するにはコストや手間がかかってしまいます。しかしUTMであればさまざまなセキュリティ機能によって一元管理ができるため、コストを抑えるだけでなく専任の部署や担当者を置く必要がありません。トラブルが発生した際も、1つのベンダーに連絡するだけでいいので安心です。

サクサの最新モデルのUTM「SS7000Ⅲ」は、充実したセキュリティ機能に加え、監視・保守・サポートなど導入後のアフターケアも充実しています。サイバー攻撃対策など、自社のセキュリティ強化を考えている場合は、UTMの導入もぜひご検討ください。

( 5 ) よくある疑問

Q1. クロスサイトスクリプティング(XSS)とSQLインジェクションとの違いとは?

A. クロスサイトスクリプティングとSQLインジェクションは、いずれもWebアプリケーションの脆弱性を悪用する攻撃手法ですが、攻撃の対象や目的が異なります。

クロスサイトスクリプティングは、ユーザーのブラウザ上で不正なスクリプトを実行させ、個人情報の窃取・悪用を目的とする攻撃です。一方、SQLインジェクションはデータベースを直接操作し、Webサイト上の情報を改ざんしたり、データを窃取・消去・不正利用したりすることを目的としています。

主な違い

  • 攻撃対象:

    クロスサイトスクリプティングはクライアント側(ブラウザ)、SQLインジェクションはサーバ側(データベース)

  • 攻撃手法:

    クロスサイトスクリプティングはJavaScriptベース、SQLインジェクションはSQL文ベース

  • 影響範囲:

    クロスサイトスクリプティングは個々のユーザー、SQLインジェクションはデータベース全体

Q2. クロスサイトスクリプティング(XSS)とクロスサイトリクエストフォージェリ(CSRF)との違いとは?

A. クロスサイトスクリプティングとクロスサイトリクエストフォージェリ(CSRF)は、どちらもWebアプリケーションの脆弱性を悪用する攻撃手法ですが、攻撃の仕組みや目的が異なります。

クロスサイトスクリプティングは、Webサイト上で悪意のあるスクリプトを実行させ、ユーザーの情報を窃取したり、ページの内容を改ざんしたりする攻撃です。一方、クロスサイトリクエストフォージェリは、ユーザーがログイン済みのWebサイトに対して、意図しないリクエストを送信させる攻撃です。

主な違い

  • 攻撃の方向性:

    クロスサイトスクリプティングは双方向(スクリプトを介した動的な影響)、クロスサイトリクエストフォージェリは一方向(リクエストの送信のみ)

  • 技術的基盤:

    クロスサイトスクリプティングはJavaScriptベース、クロスサイトリクエストフォージェリはHTTPリクエストベース

  • セッション依存:

    クロスサイトスクリプティングはセッションに依存しないが、クロスサイトリクエストフォージェリは有効なセッションが必要

  • 攻撃目的:

    クロスサイトスクリプティングは情報窃取や改ざん、クロスサイトリクエストフォージェリはユーザーに成り変わった不正操作の実行

( 6 ) まとめ

今回はクロスサイトスクリプティングの仕組みや対策方法を解説しました。Webサイトを利用していると気づかぬうちに被害に遭ってしまう可能性も少なくありません。ご紹介した対策方法に加え、日頃から不審なリンクを安易にクリックしないことが重要です。

企業にとって重要なのは、クロスサイトスクリプティングを含む包括的なセキュリティ対策を実施することです。サニタイジング、入力値の制限、WAFの導入など、複数の対策を組み合わせることで、より強固なセキュリティ体制を構築できます。

また、セキュリティ対策は一度実施すれば終わりではなく、継続的な監視と更新が欠かせません。新たな攻撃手法が次々と登場する中、最新の脅威情報を収集し、それに応じて対策を見直し続けることが重要です。

サクサでは記事の中でご紹介した「SS7000Ⅲ」をはじめ、UTMの基礎知識を解説する特設ページをオープンしています。UTMの機能や脅威となるサイバー攻撃について、動画で詳しくご紹介していますので、セキュリティ対策の参考にぜひご覧ください。

UTMの基本機能から導入メリット・選定ポイントなどを、詳しく解説したお役立ち資料もご提供していますので、ぜひご活用ください。

経営課題におけるトレンド情報や課題解決にお役立ていただける資料をまとめております。
ぜひ一度お読みください。

お役立ち資料一覧はこちら