セキュリティ 2020.06.08 2023.07.26
XML-RPCとは?詳細と扱う際の注意点
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文書の例としては、次のとおりです。
1 2 3 4 5 6 7 8 9 |
<?xml version=”1.0”?> <methodCall> <methodName>postTime</methodName> <params> <param> <value><dateTime.iso8601>20200523T13:11:09</dateTime.iso8601></value> </param> </params> </methodCall> |
このようなリクエストを送信することで、リクエストを受け取った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ファイルがある場合は追記)します。
1 2 3 4 |
<Files “xmlrpc.php”> order deny.allow deny from all </Files> |
このような.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保守・運用のパートナーをお探しなら、ぜひお気軽にお問合せください。
バージョンアップが面倒だと思ったら WordPress保守・セキュリティ対策は『wp.support』にお任せ!
WordPressのバージョンアップやセキュリティ対策にお悩みではないですか?
面倒な保守・運用作業は全て任せて、コア事業に集中してください。
大手・上場企業100社以上のWebサイトの安全を守る、WordPressのプロフェッショナル集団が、あなたのWordPressサイトを守ります!
【対応範囲】
・WordPress、プラグインのバージョンアップ ・セキュリティ対策 ・継続的なバックアップ ・緊急時の復旧対応 ・技術サポート・電話/メールサポート無制限 etc...
WordPressに関することなら何でもご相談ください!