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

クロスサイトスクリプティング(XSS)とは、Webサイトの脆弱性を悪用し、悪意のあるスクリプトを埋め込むサイバー攻撃のことです。 攻撃者が仕掛けた罠によって、ユーザーのブラウザ上で不正なスクリプトが実行されると、個人情報やCookie情報の窃取、マルウェア感染、Webサイトの改ざんといった深刻な被害が発生します。 IPA(独立行政法人情報処理推進機構)の報告によると、Webサイトの脆弱性届出件数においてクロスサイトスクリプティングは最も多く、全体の半数以上を占める主要な脅威です。企業がとるべき対策としては、サニタイジング(スクリプトの無害化)や入力値の制限、WAF(Web Application Firewall)の設置などが挙げられます。
参照:IPA(独立行政法人情報処理推進機構)「ソフトウェア等の脆弱性関連情報に関する届出状況[2025年第2四半期(4月~6月)]」
本記事では、クロスサイトスクリプティングの仕組みや種類、実際に発生した被害事例、そして効果的な5つの対策について詳しく解説します。

今回のお悩み
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.クロスサイトとは何ですか?

A.「罠を仕掛けたサイト」から「標的のサイト」へ誘導して攻撃する仕組みのことです。
クロスサイトスクリプティングという名称は、攻撃者が用意した罠サイトなどを経由し、ユーザーを別のサイト(標的サイト)へ誘導して、「サイトをまたいで(クロスして)」攻撃を実行することに由来しています。 「Cross Site Scripting」を略して「XSS」と表記されるのが一般的です。

Q2.クロスサイトスクリプティング(XSS)とフィッシングの違いとは?

A.XSSは「スクリプトを実行させる攻撃」であり、フィッシングは「偽サイトへ誘導する手口」や「詐欺行為そのもの」を指します。両者は密接に関係しており、組み合わせて利用されることが多くあります。

  • XSS(反射型など): 攻撃者が作成したリンクをユーザーにクリックさせ、ブラウザ上で不正なスクリプトを実行させます。これによりCookie情報の窃取などを行います。
  • フィッシング(との関連): XSSの攻撃用リンクをユーザーに踏ませるために、フィッシングメールやSNSでの拡散といった手口(ソーシャルエンジニアリング)が利用されます。

また、XSSによって正規のWebサイト上に偽の入力フォームを表示させ、フィッシング詐欺のように情報を盗むケースもあります。

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

A.攻撃の「対象」と「目的」が異なります。
XSSがユーザーのブラウザ(クライアント側)を標的にするのに対し、SQLインジェクションはデータベース(サーバ側)を標的にします。

【主な違いの比較】

  • 攻撃対象:XSSはクライアント側(ユーザーのブラウザ)、SQLインジェクションはサーバ側(データベース)
  • 攻撃手法:XSSはJavaScriptなどのスクリプトを使用、SQLインジェクションはデータベース操作言語(SQL文)を使用
  • 影響範囲:XSSはスクリプトを実行された個々のユーザー、SQLインジェクションはデータベース全体(情報の漏洩・改ざん・消去)

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

A.攻撃の「方向性」と「セッションへの依存度」が異なります。
CSRFは、ログイン中のユーザーになりすまして、意図しない操作(リクエスト)を勝手に行わせる攻撃です。

【主な違いの比較】

  • 攻撃の方向性:XSSは双方向(スクリプトを介して情報を盗む・改ざんするなど動的に影響)、CSRFは一方向(意図しないリクエストを送信させるのみ)
  • 実行の条件:XSSはセッションに依存しない(スクリプトが動けば成立)、CSRFはユーザーがログイン中であるなど有効なセッションが必要
  • 攻撃の目的:XSSは個人情報の窃取、Cookieの窃取、マルウェア感染など、CSRFはユーザーになりすました不正な操作(購入、投稿、退会など)の実行

( 6 ) まとめ

今回はクロスサイトスクリプティングの仕組みや対策方法を解説しました。Webサイトを利用していると気づかぬうちに被害に遭ってしまう可能性も少なくありません。ご紹介した対策方法に加え、日頃から不審なリンクを安易にクリックしないことが重要です。
企業にとって重要なのは、クロスサイトスクリプティングを含む包括的なセキュリティ対策を実施することです。サニタイジング、入力値の制限、WAFの導入など、複数の対策を組み合わせることで、より強固なセキュリティ体制を構築できます。
また、セキュリティ対策は一度実施すれば終わりではなく、継続的な監視と更新が欠かせません。新たな攻撃手法が次々と登場する中、最新の脅威情報を収集し、それに応じて対策を見直し続けることが重要です。
サクサでは記事の中でご紹介した「SS7000Ⅲ」をはじめ、UTMの基礎知識を解説する特設ページをオープンしています。UTMの機能や脅威となるサイバー攻撃について、動画で詳しくご紹介していますので、セキュリティ対策の参考にぜひご覧ください。

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

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