CMSのセキュリティ対策、クロスサイトスクリプティング(XSS)とは?

CMS(コンテンツ管理システム)にXSS対策が必須である理由は、CMSが「ユーザーが入力した記事やコメントを、そのままWebページとして画面に表示するシステム」だからです。
XSSはまさにこの「入力と表示」の仕組みを狙う攻撃です。対策が不十分だと、投稿画面やコメント欄に悪意あるプログラムを仕込まれる危険性があります。
さらにCMSの場合、サイトの管理者がその仕掛けられた画面を開いてしまうと、管理者権限そのものが乗っ取られ、サイト全体の改ざんや顧客情報の流出といった致命的な被害に直結するため、絶対に対策が必要となります。

目次
  1. クロスサイトスクリプティング(XSS)とは?
  2. どのように攻撃されるのか?(仕組み)
  3. どんな被害があるのか?(リスク)
  4. どうやって防ぐのか?(対策)
  5. まとめ

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

言葉を分解すると以下のようになります。

  • クロスサイト(Cross-Site): 複数のWebサイトをまたいで(※攻撃者が用意したサイトと、標的となる正常なサイトをまたぐことから)
  • スクリプティング(Scripting): スクリプト(簡易的なプログラム)を実行させる

つまり、クロスサイトスクリプティングとは、攻撃者が脆弱なWebサイトに悪意のあるプログラム(スクリプト)を仕掛け、そのサイトを訪れた一般ユーザーのブラウザ上で不正なプログラムを実行させる攻撃のことです。
※略称として「CSS」とするとデザイン用の言語(Cascading Style Sheets)と被るため、一般的に「XSS」と表記されます。

どのように攻撃されるのか?(仕組み)

XSSは、ユーザーが入力した内容をそのまま画面に表示する機能(掲示板、レビュー欄、検索結果の表示画面など)を持つWebサイトで発生しやすいです。 例えば、誰でも書き込める「掲示板」があるとします。

  • 正常な処理: ユーザーが「こんにちは」と入力すると、画面に「こんにちは」と表示されます。

しかし、セキュリティ対策(エスケープ処理)が不十分な場合、攻撃者が書き込み欄に悪意のある JavaScript(Webブラウザ上で動くプログラム言語)を入力してしまいます。

  • 攻撃された処理: 攻撃者が という文字列を書き込みます。
  • 被害の発生: 別の一般ユーザーがその掲示板を開いた瞬間、ブラウザは書き込まれた文字をただの文章ではなく「実行すべきプログラム」だと勘違いしてしまい、ユーザーのパソコンやスマホ上で不正なプログラムが自動的に動いてしまいます。

どんな被害があるのか?(リスク)

XSSの標的は「ユーザー」であるため、ユーザーの個人情報や権限が奪われる被害が中心となります。

  • セッションハイジャック(なりすまし) ユーザーがそのサイトにログインしている証明である「セッションID(Cookie情報)」を盗み出されます。これにより、攻撃者がユーザー本人になりすまして不正ログインし、勝手に買い物をしたり、パスワードを変更したりします。
  • 偽サイトへの誘導(フィッシング) 偽のログイン画面をポップアップで表示させたり、攻撃者が用意した別の悪意あるWebサイトへ強制的に移動(リダイレクト)させたりして、IDやパスワード、クレジットカード情報を入力させます。
  • Webサイトの改ざん ブラウザ上での表示を書き換えられ、本来ないはずの不適切な画像やメッセージを表示させられることがあります。

どうやって防ぐのか?(対策)

Webサイトを開発する段階で、ユーザーが入力したデータを画面に表示(出力)する際、安全に処理する仕組みが必要です。

  • エスケープ処理(サニタイズ)の徹底(最重要) ユーザーが入力した文字の中に、プログラムとして意味を持つ特殊文字(<, >, &, " など)が含まれていた場合、それをただの文字列(<, > など)に変換して無害化します。これをエスケープ処理と呼びます。
  • 入力値の制限(バリデーション) 電話番号の欄には数字しか入力できないようにするなど、入力できる文字の種類や長さを厳しく制限し、スクリプトを打ち込まれるリスクを減らします。
  • Cookieに「HttpOnly属性」を付与する 万が一XSS攻撃を受けても、JavaScriptからCookie(セッションIDなど)を読み取れないように設定(HttpOnly属性の付与)しておくことで、最も致命的な「なりすまし」の被害を防ぐことができます。
  • WAF(Web Application Firewall)の導入 Webサーバーの手前で通信を監視し、XSS特有の不正なスクリプトが含まれた通信を検知・遮断するセキュリティシステムを導入することも有効な防御策です。

まとめ

クロスサイトスクリプティング(XSS)は、サーバーではなく「Webサイトを訪れた無実のユーザー」に直接被害を与える攻撃です。
もし自社のWebサイトにXSSの脆弱性があった場合、自社のサイトが「お客様を攻撃するための罠」として利用されてしまい、企業の信用失墜に直結します。ユーザーからの入力内容を画面に表示する機能を作る際は、「入力された文字列はプログラムとして解釈されないよう、必ず無害化(エスケープ)する」という基本を徹底することが不可欠です。

関連する製品

組織のサイト運用を楽にする国産CMS
SITE PUBLIS(サイトパブリス)
導入実績650社以上。SITE PUBLISは、ホームページの更新を組織の誰もがかんたんに使えるように設計された国内開発のCMSのです。クライアント独自のオリジナル機能も「使いやすさ」に拘って納品します。
製品サイトを見る 資料ダウンロード