
セキュリティ 2025.06.03
2025.05.19
セキュリティ
Webサイトの運営や、Webアプリケーションを利用するうえで、サイバー攻撃への対策は必要不可欠です。
今回は、サイバー攻撃の一つである、クロスサイトスクリプティング(Cross-Site Scripting:XSS)の概要と、対策方法を解説していきます。
XSS攻撃の種類とそれぞれの特徴、攻撃の仕組みや被害の事例についてもまとめているので、ぜひ参考にしてください。
クロスサイトスクリプティング(XSS)とは、Webサイトのセキュリティ上の脆弱性を悪用して不正なスクリプトを埋め込む、サイバー攻撃の一種、もしくは脆弱性そのもののことを指します。
攻撃者は、フォーム欄やURLパラメータなどを介して悪意のあるスクリプトを対象のWebサイトに忍ばせ、訪れたユーザーのブラウザ上で実行させます。
悪用されるスクリプトにはさまざまな種類がありますが、Cookieの不正取得のように、個人情報を搾取することを目的としたものが多い点が、危険視される理由です。
独立行政法人情報処理推進機構(IPA)の「脆弱性対策情報データベースJVN iPediaの登録状況(2024年第4四半期)」によると、2024年10月~12月にJVN登録された脆弱性3238件のうち、XSSはもっとも多い割合979件を占めています。
XSSが悪用されれば、自社サイトの改ざんや、情報漏えいなどのリスクが高まります。
XSSとクロスサイトリクエストフォージェリ(Cross-Site Request Forgery:CSRF)は、どちらもWebサイトの脆弱性を突くサイバー攻撃ですが、その手法と目的には大きな違いがあります。
XSS攻撃は、悪意を持って埋め込まれたスクリプトがWebサイトで実行され、ユーザーが攻撃を受ける仕組みです。
一方、CSRFは攻撃者がユーザーの認証情報を悪用し、不正なリクエストをターゲットのWebアプリケーションに送信させます。
ログイン機能のあるWebサイトを利用し、正規のユーザーになりすましてリクエストを送信し、ユーザーが意図しない処理を実行させるという仕組みです。
例えば、銀行のWebサイトを開いているユーザーが、攻撃者の仕掛けたページを開くことで、知らないうちに送金処理が実行されるケースなどが考えられます。
特にCSRFの被害が発生しやすいのは、ログイン状態が維持されるECサイトなどです。パスワードが変更されたり、意図しない決済をさせられたりするリスクがあります。
SQLインジェクションは、XSSと同様、Webアプリケーションの脆弱性を狙った攻撃の一種です。
「SQL」と呼ばれるコンピュータ言語を用いて脆弱性を悪用し、アプリケーションに意図しない不正な処理を実行させるものです。
SQLインジェクションは、ユーザーを攻撃対象とするXSSと異なりデータベースがターゲットです。
これにより、攻撃を受けたデータベースは、不適切なデータの削除や改ざん、情報漏えいなどの被害に遭う可能性があります。
最悪の場合、管理者権限が奪われる事態も考えられるサイバー攻撃です。
クロスサイトスクリプティング(XSS)による攻撃は、一般的に次の手順で実行されます。
スクリプトが実行されると、偽のWebページが表示されたり、マルウェア感染につながったりする可能性があります。
例えば、よく使うサイトで見覚えのないポップアップ画面が出てくる、不審な入力フォームが表示された、というような場合には注意が必要です。
これらの攻撃は、ユーザーにログイン情報などの重要な情報を入力させて、その内容を盗み取る目的で行われ、個人情報の流出やマルウェア感染などのリスクがあります。
このような被害を防ぐためには、普段から使っているWebアプリであっても、十分に注意す
表示される内容をよく確認し、安易にリンクをクリックしたり、フォームに情報を入力したりしないよう気をつけなければなりません。
しかし、攻撃者は巧妙な手段でクリックや入力を促すため、現状、ユーザーの注意だけで被害を完全に防ぐのは困難です。
クロスサイトスクリプティング(XSS)のタイプには、以下の3種類があります。
それぞれの違いを理解したうえで、適切な対策を講じなければなりません。
反射型XSSは、ユーザーが入力したデータがページに反映される仕組みを利用し、特定のリンクをクリックした際に被害が発生する攻撃手法です。
攻撃者は、不正なスクリプトを埋め込んだリンクを偽のWebページやメールになどに仕込み、脆弱性のあるWebサイトへリクエストを送信させます。
ユーザーが、そのリンクをクリックすることでスクリプトが実行され、個人情報の盗み出しなどが行われる仕組みです。
フィッシング攻撃が反射型XSSの代表的な例として挙げられ、個人のクレジットカード情報やログイン情報、企業の機密データなどが狙われています。
格納型XSSは、攻撃者がWebサイトに悪意のあるスクリプトを埋め込み、訪問者がページにアクセスするたびに、そのスクリプトが実行されるという攻撃方法です。
Stored XSS(格納型XSS/蓄積型XSS)やPersistent XSS(持続型XSS)と呼ばれ、XSSのなかでも危険性が高いとされる攻撃です。
例えば、掲示板やブログのコメント欄に不正なスクリプトを含んだ投稿を行い、それを閲覧したユーザーが攻撃の標的になるケースが考えられます。
当該ページを開くたびにスクリプトが実行され、個人情報の窃取や、セッションの乗っ取りなどが行われます。
この攻撃では、サイトに訪れた複数のユーザーが対象になるため、影響範囲が大きく、大規模なWebサイトが攻撃の対象になれば甚大な被害につながりかねません。
DOM Based XSSは、WebページのDOM(Document Object Model)を悪用して行う攻撃手法です。
これは、サーバー側ではなく、クライアント側(ブラウザ内)で攻撃が成立するため、検出が難しいのが特徴です。
この攻撃は、DOMを操作するJavaScriptが、ユーザーの入力を適切に処理しないことで発生します。
例えば、WebサイトがURLのハッシュ値やクエリパラメータの値を直接HTMLに挿入する場合、攻撃者はこれを悪用することが可能です。
DOM Based XSSは、フロントエンドでのデータ処理が増えた現代のWebアプリケーションにおいて、注意が必要な攻撃の一つといえます。
動的サイトや動的ページは、クロスサイトスクリプティング(XSS)攻撃に対して、特に注意が必要です。
動的サイトとは、アクセスしたユーザー、時間、場所といった条件に応じて、異なる情報を自動で表示するサイトのことをいいます。
いつ誰が見ても同じ情報が表示される静的サイトと違い、アクセスするたびに異なる情報が表示されるのが特徴です。
代表的な動的ページには、次のようなものが挙げられます。
このように、訪問者が入力した情報に合わせてページの作成、表示を行うWebサイトやページは、脆弱性が生じやすく、XSSに対してとくに注意が必要だといえます。
なかでも、アンケートページやSNS、ブログのコメント欄など、ユーザーの書き込みができるサイトは要注意です。
クロスサイトスクリプティング(XSS)を悪用したサイバー攻撃は後を絶たず、企業のWebサイトが対象になったケースも報告されています。
ここでは、実際にあった企業へのXSS攻撃について、概要と原因、企業の対策などを紹介します。
自社でセキュリティ対策を行う際の参考にしてください。
2021年9月、ベイシアのECサイトがクレジットカード情報漏えいの可能性を指摘されたことをきっかけに、同サイトを含む11社のECサイトから延べ43万件以上の顧客情報が流出したことが判明しました。
これらのサイトは、同一企業のSaaS型のECサイト構築サービスを利用していました。攻撃者はこのシステムの基幹サーバーに不正アクセスし、悪意のあるプログラムを仕掛けたとみられています。
この事件によって生じた賠償責任などは明らかになっていませんが、クレジットカード情報が漏えいした場合、企業に数千万円以上の負担が生じるケースは珍しくありません。
ECサイト運営者にとって、セキュリティ対策の重要性と外部サービスの利用におけるリスク管理の必要性を強く示す事例となりました。
2024年5月、全国漁業協同組合連合会(全漁連)のECサイト「JFおさかなマルシェ ギョギョいち」が不正アクセスを受け、およそ2万件の顧客情報と約1.1万件のクレジットカード情報が漏えいしました。
攻撃者は、サイト構築サービスにおけるXSSの脆弱性を悪用し、不正プログラムを埋め込んで情報を盗み取ったとみられています。
これにより、全漁連は5月14日にサイトを閉鎖し、カード会社と連携して不正利用防止を図りましたが、影響の大きさから2024年10月に閉店を決定しました。
この件では、警視庁や個人情報保護委員会への報告を行い、情報管理の厳格化を進めるとともに、被害を受けた顧客への注意喚起、今後の補償対応なども検討されています。
企業におけるクロスサイトスクリプティング(XSS)の対策では、従業員個人レベルと、管理者レベルでの対応が必要です。
どちらか一方の対策では、巧妙に仕掛けられるXSS攻撃への備えとして十分とはいえません。
そのため、それぞれができること、注意すべき点を把握し、状況に合わせて適切に対応する必要があります。
従業員が個人レベルで行える主な対策は、慎重なアクセスの徹底と、動作環境の定期的なアップデートなどが挙げられます。
仮に従業員が利用するデバイスがマルウェアなどに感染すれば、社内ネットワークに被害を広げかねません。
怪しいURLをクリックしない、アップデートを怠らないなど、ルールを守ってセキュリティ対策を行いましょう。
受け取ったメールやwebサイト上のURLを安易にクリックしないことも、従業員個人が行うべき対策の一つです。
冒頭に挙げたように、XSS攻撃は不正なスクリプトを埋め込んだURLのクリック、およびアプリケ-ションの起動によって攻撃が発動する仕組みです。
そのため、不審なURLを見かけた場合には、クリックしないことが最も有効な防衛策になります。
不審なURLを見分けるポイントは、以下のとおりです。
これらのURLをクリックする必要がある場合は、公式サイトのURLと比較したり、短縮URLを展開して確認したりするなど、慎重な行動が求められます。
セキュリティを含むすべての動作環境を最新の状態に保つことは、XSSを悪用した攻撃への効果的な対策です。
Webアプリケーションやサーバー環境には脆弱性が見つかることがあります。古いバージョンを使い続けると攻撃者に狙われやすくなります。
定期的にアップデートすることで、発見されたばかりの脆弱性を悪用したサイバー攻撃から身を守ることが可能です。
ブラウザやサーバーのアップデートは、比較的簡単に実施できるセキュリティ対策なので、XSS攻撃の被害を防ぐためにも、常に最新状態の維持を心がけましょう。
従業員個人レベルのセキュリティ対策だけでは、XSS攻撃に対して十分な対策にはなりません。
セキュリティ管理を担う部署では、スクリプトの実行を防いだり、入力値に制限を設けたりして対策を実施する必要があります。
ここでは、管理者が行うべきセキュリティ対策を4つ紹介していきます。
クロスサイトスクリプティングの問題に対処するためには、サニタイジング(スクリプトの無害化)を行い、実行を防ぐことが効果的です。
例えば、<script>~</script>という文字列を含むデータが、サニタイジングされていないWebアプリケーションに投稿されたとしましょう。
この場合、投稿内容に表示されたボタンやリンクをユーザーがクリックすると、JavaScriptなどが実行されてしまいます。
このようなリスクを防ぐためには、まず、以下5つの特殊文字に注目します。
これらが画面にそのまま表示されるように置換(エスケープ)することで、スクリプトの無害化(=サニタイジング)を図ることが可能です。
これを行えば、ブラウザはこれを単なる文字列と認識するため、スクリプトを実行できなくなり、攻撃者が意図した動作は実行されません。
JavaScriptで関数を定義したり、PHPのhtmlspecialchars関数を用いたりしてサニタイジングを行いましょう。
ユーザーが入力できる値に対して制限を設けるのも、XSSを用いた攻撃への有効な対策になります。
例えば、フォームの郵便番号欄では、数字以外を入力できないようにすることで、スクリプトが挿入されるのを防げます。
また、コメント欄などでは、タグを禁止(<、>、 "、 ' などを除外)したり、特定の文字列を除外(script、onerror、onload などを禁止)したりするのもよいでしょう。
このほか、ひらがなのみ、カタカナのみ、といったように、文字種を制限できない場合は、文字の長さを制限すれば、スクリプトの挿入をある程度抑制できます。
不正なスクリプトが実行されないためには、URLの出力制限も有効です。
例えば、URLを出力する際に、「http://」または「https://」から始まる正規の形式のみを許可することで、javascript: や data: などのスキームを用いた攻撃を防げます。
また、URLをHTMLに出力する際は、エスケープ処理(< > & への変換)を適用し、意図しないスクリプトの埋め込みを防ぎましょう。
このほか、ユーザーが入力するURLをそのまま出力せず、正規表現を用いたバリデーションを行って不審な文字列や特殊な記号を排除するのも有効です。
こうした制限を適用することで、不正なスクリプトの実行を未然に防ぎ、XSS攻撃のリスクを軽減できます。
サニタイジングなどの対策は、Webアプリケーション開発の段階で実施するのが一般的です。
たとえ慎重に作成されたWebアプリケーションであっても、クロスサイトスクリプティング攻撃に対する対策が不十分な可能性はあります。
そのため、万一に備えて、WAF(Web Application Firewall)の導入を検討するとよいでしょう。
WAFは、Webアプリケーションをサイバー攻撃から守るためのツールで、一般的にWebサーバーの前に配置し、Webアプリケーションに対するすべての通信を検査、解析します。
また、攻撃者による不正な通信を検出した際には、その通信を遮断する役割もあり、セキュリティレベルの向上に有効です。
XSS攻撃では<script> タグや onerror=、 javascript: などのスクリプトを埋め込む手法が一般的ですが、WAFはこれらの特徴的なパターンを自動検知し、疑わしいリクエストを遮断することが可能です。
仮にWebアプリケーションで入力内容のチェックが不足し、XSS攻撃が発生した場合でも、WAFを導入していればその攻撃を防げる可能性が高まります。
WAFのほかにも、XSS攻撃対策に効果的なツールとして、UTMが挙げられます。
UTM(Unified Threat Management:統合脅威管理)は、複数のセキュリティ機能を、1台の機器に集約したセキュリティツールです。
さまざまなセキュリティ機能が搭載されているため、XSS攻撃以外のサイバー攻撃にも対応できるのが特徴です。
サイバー攻撃は、日々、巧妙化・複雑化しており、その種類も多岐にわたるため、個別に対応していてはコストや手間が膨大になります。
UTMを導入すれば、すべてのセキュリティ機能を一元管理でき、コスト削減を実現するほか、場合によっては専任者を置く必要もありません。
また、問題が発生した際も、1つのベンダーに連絡するだけで済むため、安心して対応できるのがメリットです。
クロスサイトスクリプティング(Cross-Site Scripting:XSS)攻撃は、Webサイトの脆弱性を悪用し、不正なスクリプトを埋め込むサイバー攻撃です。
サイトに訪れたユーザーにスクリプトを実行させることで、ログイン情報やクレジットカード情報などを抜き取ります。
企業においては、従業員、管理者ともに適切な対策を講じることが求められます。
安易にリンクをクリックするのを避けたり、Webサイトのセキュリティを強化したりといった工夫が必要です。
しかし、XSS攻撃を見抜くことは難しく、ユーザーの注意だけでは防ぎきれないため、WAFやUTMの導入を検討することをおすすめします。
FLESPEEQ UTMは、不正侵入を感知・ブロックするIDS/IPSや、Web(URL)フィルタリングをはじめとするセキュリティ機能を1つにまとめたセキュリティツールです。
【クラウド型】ではインターネット接続とクラウドUTMがセットでご提供でき、必要に応じて24時間/365⽇の監視オプションもご⽤意しています。
パターンファイルの更新から、ネットワークの設定変更まで、すべてお任せいただくことも可能なため、情シス担当者が不在の企業様でも、安心してご利用いただけます。
「セキュリティのことは何もわからない」という場合でも大丈夫です。まずはオンライン無料相談をご利用ください。専門スタッフが、セキュリティに関するお悩み、課題の棚卸しをお手伝いいたします。
日本通信ネットワークは、企業ごとに、企画立案から構築・運用までワンストップで、ICTソリューションサービスを提供しています。
IT担当者様が、ビジネス拡大や生産性向上のための時間を確保できるよう、全面的に支援します。
お問い合わせ・ご相談・お見積りは無料ですので、お気軽にお問い合わせください。
サービスに関するご質問、お見積りご相談他、
お気軽にお問い合わせください。
※弊社休日のお問い合わせにつきましては
翌営業日以降の回答となります。 ご容赦ください。