WordPressを長期間管理運用していると、セキュリティの面でさまざまな状況に直面することになります。

今回の記事ではその中でも、XSS(クロスサイトスクリプティング)というWordPressへの攻撃と対策についてお伝えしてまいります。

キーワードだけ見るとなにやら難しい専門用語的なニュアンスがありますが、できる限り簡単な言葉で解説をしましたのでぜひ読み進めてみてください。

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

XSS(クロスサイトスクリプティング)攻撃とは、Web上で動作するアプリに、悪意のあるユーザーが攻撃者の用意した簡易プログラムを埋め込むことから始まります。

そのアプリを利用するユーザー側の端末で実行させる攻撃手法のことです。

例えば、Web上の掲示板などで入力された文字列に、悪意のある簡易プログラムが混ざっていたとしましょう。
その場合、それを閲覧したユーザーのブラウザ上で悪意のある簡易プログラムが実行され、それを知らない善意のユーザーが、意図しない行動をさせられてしまう可能性があります。

具体的には、下記のようなものがあります。

  • クッキーの値を不正に取得、設定しセッションハイジャックを行う
  • CSRF(クロスサイトリクエストフォージェリ)の踏み台とする
  • URL等を偽装し利用者をフィッシングサイトへ誘導する
出典:エックスサーバーのWAFの解説ページ

2つのXSS攻撃の手法

StoredXSS(永続型XSS)

ユーザーが投稿した情報がサイト内に保存され、後で見知らぬユーザーが閲覧した際に、その悪意のある簡易プログラムが実行される攻撃手法です。

主に掲示板などの投稿フォームが該当し、取り除かれるまでは永続的に存在するため、アクセスしたすべてのユーザーに害を及ぼす形になります。

ReflectedXSS(反射型XSS)

攻撃者が作成した特殊なリンクを、閲覧者がクリックした際に悪意のある簡易プログラムが実行される攻撃手法です。
ウェブサイト上のリンクやメールに書かれたリンクをクリックすることで、悪意のある簡易プログラムが実行する形になり、ユーザー情報の搾取やウイルスへの感染を行わせる形が該当します。

XSS攻撃を防ぐには、Web上のアプリにおいて、入力値の検証や、入力値に対するエスケープ処理(プログラムの中の特殊な記号を「ただの文字」として処理する方法)などが必要です。

また、ユーザーが使っているWebブラウザの設定のセキュリティを高めておくことも有効です。

最新の脆弱性情報を常に確認し、適切な対策を行うことで避けることが可能です。

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

クロスサイトスクリプティング(XSS)もSQLインジェクションもウェブアプリの弱点を狙い撃ちされる攻撃ですが、攻撃方法と攻撃目的が異なります。

XSS攻撃

攻撃者がウェブページにコードを埋め込むことで発生します。
攻撃者は、サイトにアクセスした他のユーザーのブラウザでこのコードを実行することができます。

この攻撃は通常、悪意のあるスクリプトを埋め込んで、ユーザーのクッキー情報やセッションIDを盗むことを目的としています。

SQLインジェクション

攻撃者がウェブアプリケーションのフォームなどの入力フィールドに特殊なSQLクエリを挿入することで発生します。
攻撃者は、この攻撃を利用して、データベース内の情報を盗み出したり、改ざんしたりすることができます。

SQLインジェクションは、通常、ユーザーが入力した情報を悪用するために使用されます。

つまり、XSS攻撃はウェブページに悪意のある簡易プログラムを埋め込み、他のユーザーのブラウザで実行することを目的としています。

一方、SQLインジェクションは、SQLクエリを入力フォームから送信することで、データベース内の情報を盗み出したり、改ざんしたりすることを目的としています。

XSS攻撃を防ぐための4つの方法

入力値の検証(バリデーション処理)

サイトに入力された情報を十分に検証し、悪意のあるプログラムを排除することが必要です。
例えば、電話番号入力項目であれば、数字のみに入力制限をかけるなど、想定外の値が入力できないようにしておくことが必要です。

URLを入力させる場合は「http://」または「https://」で始まるアドレスのみを受け付けるなどの対応が必要です。

出力値のエスケープ(プログラムの中の特殊な記号を「ただの文字」として処理する)

サイトに表示する情報を出力する際に、HTMLエスケープ(HTMLの「<」「>」等のタグ、「”」などの特殊文字をそのまま表示)を行うことで、悪意のあるスクリプトを無効化することができます。

WordPressでは基本的にはテーマやプラグインでエスケープ処理が施されていますが、常にセキュリティのアップデートは継続する必要があります。ここからも管理画面で赤いランプのついたプログラムの更新は必須であるということが分かると思います。

WAF(Web Application Firewall)の設定

WordPressにおいてはプログラムをすべて最新の状態にしておくことと、サーバー側のWAFをオンにしておくことなどで一定の効果があります。

エックスサーバーでは管理画面からボタンひとつでWAFの設定が完了します。
これを入れることで、「java script」などのスクリプトタグが埋め込まれたアクセスについて検知されるようになります。

HTTPSの利用

WordPressのSSL化を行なっておくことで、通信の暗号化と通信の隙間を狙った攻撃者からの保護が可能になります。

どのようなWordPressサイトも、サーバー側でHTTPSの設定を行なっておくことと、管理画面の設定のところで「WordPressアドレス(URL)」と「サイトアドレス(URL)」は必ずHTTPSで始まるURLの設定にしておきましょう。

投稿者プロフィール

山口 敦
山口 敦
2004年頃の会社員時代からブログ作成を始める。ブログ作成が楽しくなり、そのまま趣味が高じて2006年にホームページ制作で起業、2008年に株式会社ウェブロードを設立。現在は、個人・中小事業者のWordPressサイト制作・改善を中心に、Web業界17年の知識と経験を生かして、大型案件のWebディレクターとしても活動中。 プロフィールはこちら

お問合せフォームはこちら

(※営業電話が多いため留守電にしています。お急ぎの方は下記メールフォームをお使いください。)

お見積りのご依頼・打ち合わせはZOOM/GoogleMeet/お電話等、オンラインでも対応可能です。全国からお問い合わせを受付けています。
2営業日を過ぎても弊社からの連絡がない場合はメールが届いていませんので、大変お手数をお掛けしますが、下記メールアドレスにご連絡ください。

    お問い合わせの前に下記、ご確認をお願いいたします。

    任意貴社サイトURL

    必須お問い合わせ項目

    必須制作費のご予算はどれくらいですか?

    企画・設計、デザイン、画像・文章の作成、サイト内検索システムの導入等、
    ヒアリングを元にご予算やご希望に応じたお見積りをご提案させて頂きます。
    弊社制作費の費用感につきましてはこちらの記事をご参照ください。

    必須制作目的はどうお考えですか?(複数選択可)

    どこに力を抜きどこに力を入れるのか、
    ご予算とご要望の中から最適なご提案をさせていただきます。

    必須どのような機能が必要ですか?(複数選択可)

    SSL(https://~)対応、ブログ機能、スマホ対応(レスポンシブ)、
    ログイン等セキュリティ対策、ページタグSEOの最適化は標準搭載。

    必須どのような作り方がご希望でしょうか?(複数選択可)

    WordPressでの構築になりますので、お客様のご要望に比較的柔軟にお応えすることが可能です。
    企画ご提案する前に参考にさせていただく項目です。

    必須お問い合わせ内容を教えてください

    必須お名前

    必須フリガナ

    必須メールアドレス

    必須貴社名

    任意電話番号(ハイフン無し・半角数字)