セキュリティ 2023.07.26

XML-RPCとは?詳細と扱う際の注意点

この記事を書いた人

土井 純也

WordPressスペシャリスト・エンジニア/株式会社e2e 取締役 / CTO

1985年北海道生まれ。
200社以上の大手上場企業のWordPressサイトの制作、保守・セキュリティをサポートしている。

【 展開しているサービス一覧 】
■WordPress開発サービス「wp.make
■WordPress保守/運用サービス「wp.support
■WordPressハッキング/緊急復旧対応サービス「wp.rescue
■WordPressバージョンアップ代行サービス「wp.versionup

WordPressなどのWebサービスで、管理画面にログインせずにリモートで操作するための仕組みが存在することをご存知でしょうか。
その仕組みとはXML-RPCです。

XML-RPCは、リモートで手続きを呼び出すための仕組みであり、その仕組みを利用することでリモート操作が可能となります。

今回は、XML-RPCの概要からWordPressでの利用方法や、利用の際の注意点を解説します。

XML-RPCの安全な利用や管理画面のカスタマイズによる日々の業務の工数削減に興味のある方は、ぜひ一度WordPressのプロにご相談ください。
WordPressのプロへの【無料相談】はこちら

XML-RPCとは

XML-RPCは遠隔手続き型呼び出し(RPC)プロトコルの一種です。
プロトコルは「通信時の約束事」であり、コンピュータ同士が正常に通信を行うためにプロトコルは必須となります。

XML-RPCは、XML形式のデータをHTTPでやり取りするためのプロトコルです。XML-RPCを利用するためには、XML-RPCサーバを立ち上げ、そのサーバに対してリクエストを送信します。

XML-RPCクラスの使い方について

XML-RPCはPHPなどのプログラミング言語を使ってWebサービスに組み込むことができます。

たとえば、PHPのフレームワークである「CodeIgniter」では、XML-RPCクラスを読み込み、XML-RPC Serverクラスを読み込むことで、XML-RPCが利用できるようになります。

XML-RPCサーバに対して、次の情報を含むリクエストを送信すると、XML-RPCサーバをリモートで操作可能です。

  • サーバのURL
  • 呼び出したいサーバ上のメソッド
  • リクエストデータ

XML-RPCでは利用できるデータ型が決まっています。その詳細については次の項目で確認しましょう。

XML-RPCのデータ型について

XML-RPCで利用できるデータ型は8種類です。

データ型 説明 使用例
integer 整数 <i4>30</i4>
double 倍精度浮動小数点数 <double>-33.84</double>
boolean 論理値(0/1) <boolean>0</boolean>
string 文字列 <string>xml-rpc string</string>
base64 Base64エンコードデータ <base64>
44GT44KM44GvQkFTRTY044Gu44K144Oz44OX44Or44Gn44GZ
</base64>
date/time 日時 <dateTime.iso8601>20200522T11:32:45</dateTime.iso8601>
array 配列 <array>
<data>
<value><string>str1</string></value>
<value><i4>54</i4></value>
<value><string>str2</string></value>
</data>
</array>
struct 連想配列 <struct>
<member>
<name>name1</name>
<value><string>hello</string</value>
</member>
<member>
<name>name2</name>
<value><string>world!</string></value>
</member>
</struct>

このようなデータ型を用いて、XML文書を作成してリクエストを送信します。
典型的なXML-RPCリクエストのXML文書の例としては、次のとおりです。

このようなリクエストを送信することで、リクエストを受け取ったXML-RPCサーバが処理を行います。

xmlrpc.phpについて

xmlrpc.phpは、WordPressを構成するPHPのプログラムコードです。

XML-RPCをコントロールするためのプログラムが記載されており、xmlrpc.phpを利用することで、次に挙げるような処理を他のプログラムやサイト外から行えます。

  • メールによる記事投稿
  • 既存記事の編集
  • 既存記事の削除
  • ファイルアップロード
  • コメントの編集
  • ピンバック

など

通常、上記の処理はWordPressの管理画面からログインしなければ行えません。

しかし、xmlrpc.phpを利用することで、管理画面からログインせずともリモートで操作が行えるのです。

WordPressのXML-RPC機能が悪用されることがある

WordPressを利用する上でも非常に便利なXML-RPC機能ですが、その反面セキュリティ的に弱い部分が存在します。

ここでは、xmlrpc.phpを利用した攻撃の概要と対策方法を見ていきましょう。

xmlrpc.phpへの攻撃概要

サイト外からのアクセスを許可するxmlrpc.phpファイルが悪用されると、次に挙げるような攻撃を受ける可能性があります。

  • DoS攻撃
  • ブルートフォース攻撃(総当たり攻撃)
  • サイトの改ざん

など

DoSはアクセス拒否攻撃と呼ばれるものであり、Webサイトに対して大量のリクエストを送信することでWebサイトにアクセスできなくしたり、最悪の場合にはWebサーバをダウンさせたりする攻撃のことです。

そのほかにも、ログインIDとパスワードの組み合わせを総当りで施行するブルートフォース攻撃や、管理者権限が盗まれることでWebサイトの改ざんが行われる可能性が存在します。

xmlrpc.phpを悪用したDos攻撃への対処方法

先に挙げた攻撃のなかでも、特にDoS攻撃は被害にあう可能性が高く、対応が必須です。xmlrpc.phpを利用しない場合は、機能を停止することが最も確実ですので、具体的な対策方法を解説します。

プラグインによる制限

xmlrpc.phpを対象とした攻撃が存在することは有名であり、多くのWordPressプラグインで対策が行えるようになっています。

対策できるプラグインの例としては、次のものが挙げられます。

など

手軽にxmlrpc.phpを無効化したい場合には、こちらのプラグインを利用するとよいでしょう。

その他、WordPressのセキュリティ対策について、詳しく知りたい方は、ぜひ以下の記事もご参考ください。
WordPressセキュリティ対策はここから!コード不要の初心者向け対策4選

.htaccessファイルを使った制限

プラグインを導入したくない場合は、.htaccessファイルを使った制限でも同様に対応できます。
.htaccessファイルは、WebサーバーソフトウェアとしてApacheを利用している場合に利用可能なアクセス制限を記載するファイルです。

もし、お使いのWebサーバーソフトウェアがApache以外である場合は、利用できませんのでご注意ください。

.htaccessでxmlrpc.phpへのアクセスを制限するためには、WordPressのインストールフォルダに次の内容の.htaccessを作成(既存の.htaccessファイルがある場合は追記)します。

このような.htaccessファイルを作成することで、xmlrpc.phpへのアクセスを全面的に制限することが可能です。

まとめ

XML-RPCはXML形式のデータをHTMLでやり取りするためのプロトコルです。XML-RPCを利用することで、Webサービスなどのリモート操作が可能となります。

WordPressを利用する場合には、xmlrpc.phpファイルに必要なプログラムが記載されており、こちらのファイルへのアクセスによってメールによる記事投稿などが行えます。

しかし、xmlrpc.phpはサイバー攻撃の標的になりやすく、DoS攻撃やサイト改ざんなどの被害にあう可能性も考えられるものです。

そのため、利用しない場合にはプラグインや.htaccessファイルを使って、アクセスを制限しましょう。

WordPressをより便利に活用したい、更新にかかる工数を削減したい、という方は、ぜひ一度、WordPressの専門家にご相談ください。
WordPressのプロへの【無料相談】はこちら

WordPress保守・運用のパートナーなら「wp.support」にお任せ!

WordPressサイトを運用していて、以下のようなお悩みはありませんか?

  • 管理画面を使いやすくしたいけれど、カスタマイズする時間や技術がない…
  • サイトのUI/UXを改善したいけれど、自社内では難しい…
  • WordPressサイトを高速化したいけれど、ノウハウがない…
  • セキュリティ対策をしたいけれど、知識のある人材がいない…
  • 日々の業務に追われて、バージョンアップなどの保守業務が放置気味…
  • ちょっとしたトラブルを気軽に相談できる相手が欲しい…

「wp.support」は、WordPressのプロフェッショナル集団によるWordPress保守サービスです。
「セキュリティ対策」「バージョンアップ対応」「定期バックアップ」はもちろん、「電話サポートが無制限」なのでカスタマイズの方法やトラブル発生時にも気軽にプロに相談できます。

既に導入済みのお客様からも、
「些細なことでも気軽に相談できるパートナー的な存在」
「困ったら相談していいんだ、と気持ちが楽になった」
と大変ご好評をいただいています。

WordPress保守・運用のパートナーをお探しなら、ぜひお気軽にお問合せください。

>> wp.supportに無料相談する

バージョンアップが面倒だと思ったら WordPress保守・セキュリティ対策は『wp.support』にお任せ!

wp.support資料

WordPressのバージョンアップやセキュリティ対策にお悩みではないですか?

面倒な保守・運用作業は全て任せて、コア事業に集中してください。
大手・上場企業100社以上のWebサイトの安全を守る、WordPressのプロフェッショナル集団が、あなたのWordPressサイトを守ります!

【対応範囲】
・WordPress、プラグインのバージョンアップ ・セキュリティ対策 ・継続的なバックアップ ・緊急時の復旧対応 ・技術サポート・電話/メールサポート無制限 etc...

WordPressに関することなら何でもご相談ください!