WordPressのxmlrpc.phpとは?無効化すべき理由

WordPressのxmlrpc.phpとは?無効化すべき理由

WordPressには、外部からサイトとやり取りできる機能が以前から搭載されています。そのために長年使用されてきたのが、xmlrpc.phpというファイルです。しかし近年では、このファイルは解決策ではなく問題の原因として扱われることが多くなっています。

この記事では、xmlrpc.phpとは何か、そしてなぜ作られたのかを解説します。加えて、このファイルが引き起こす代表的なセキュリティ問題と、それらを自分のWordPressサイトでどう対処するかについても取り上げます。

WordPressにおけるxmlrpc.phpとは

XML-RPCは、HTTPを通信手段として、XMLをデータのエンコード手段として使用し、WordPressと他のシステムとの間でデータをやり取りできる機能です。WordPressは完全に独立したシステムではなく、他のシステムと連携する必要がある場面もあるため、この機能が用いられてきました。

xmlrpc.phpによって実現されていた主な機能には、スマートフォンからのサイト接続、他サイトからのトラックバックやピンバックの実装、そしてJetpackプラグインに関連する一部の機能などがあります。

例えば、モバイル端末からWordPressサイトに投稿したい場合、xmlrpc.phpによって有効化されているリモートアクセス機能を使えばそれが可能でした。

xmlrpc.phpが作られた理由とその使用方法

XML-RPCの使用は、WordPressという名前になる前の初期の時代までさかのぼります。

インターネットが今ほど発達していなかった時代には、執筆や公開は今よりもずっと困難で手間のかかる作業であり、通信速度も非常に遅いものでした。当時の解決策として考えられたのが、コンテンツを事前に作成しておき、接続時にまとめてブログへ投稿できる「オフラインブログクライアント」の開発でした。この接続手段として使用されたのが、XML-RPCです。

XML-RPCは当初、デフォルトで無効化されており、WordPress2.6で初めてダッシュボードに有効・無効を切り替えるオプションが追加されました。

その後、WordPress3.5でモバイルアプリの登場とともに、XML-RPCはデフォルトで有効化されるようになり、ダッシュボードからの有効・無効の切り替えオプションも削除されました。

現在のXML-RPCの扱い

2015年、WordPressのコアに新しいREST APIが導入され、モバイルアプリや他のプラットフォームとの連携が可能になりました。これをきっかけに、多くの開発者がREST APIを使うようになり、事実上XML-RPCの役割は置き換えられました。

とはいえ、XML-RPCは現在もWordPressで有効な状態にあり、xmlrpc.phpファイルは依然としてコアソフトウェアのディレクトリ内に存在しています。

おすすめの関連記事

WordPress REST APIの詳細や、WordPress開発での活用方法についてさらに詳しく解説しています。

xmlrpc.phpを無効化すべき理由

XML-RPCの最大の問題は、セキュリティ上の懸念にあります。問題の本質はXML-RPCそのものではなく、このファイルが悪用されることで、サイトへのサイバー攻撃が可能になる点にあります。

1つ目のリスクは、ブルートフォース攻撃(総当たり攻撃)による不正ログインです。攻撃者はxmlrpc.phpを通じて、複数のユーザー名とパスワードの組み合わせを用いてログインを試みます。この手法では、1つのコマンドで何百通りものパスワードを一度に試すことが可能であり、通常のセキュリティツールではブルートフォース攻撃を検知・ブロックすることが難しくなります。

2つ目のリスクは、DDoS攻撃によるサイトの停止です。ハッカーはWordPressのピンバック(pingback)機能を利用して、一度に数千のWebサイトにピンバックを送信します。xmlrpc.phpにはこの機能が含まれており、これにより攻撃者は無数のIPアドレスを使った分散型攻撃を仕掛けることができます。

ポイント

Webサイトにはさまざまな脅威が存在し、セキュリティリスクを常に抱えています。こうした脆弱性への対策として効果的なのが、信頼性の高いWordPress向けホスティングプロバイダーを選ぶことです。高度なセキュリティ対策を実装している
安全なWordPress向けホスティングサービスを選ぶことで、サイトをしっかりと保護することができます。

そのため、強力なパスワードの設定やWordPress向けセキュリティプラグインによる保護に加えて、xmlrpc.phpを無効化するのが最善の対策と言えます。

自分のサイトでXML-RPCが有効になっているかどうかを確認するには、「XML-RPC Validator」というツールを使ってチェックしてみましょう。エラーメッセージが表示される場合は、XML-RPCが無効になっている状態です。

一方で、成功メッセージが表示された場合は、xmlrpc.phpを無効化することを強くおすすめします。

WordPressでxmlrpc.phpを無効化する方法

それでは、WordPressでxmlrpc.phpを無効化する2つの方法を見ていきましょう。

1. プラグインでxmlrpc.phpを無効化する

プラグインを使えば、WordPressサイトでXML-RPCを無効化するのは非常に簡単です。

WordPressのダッシュボードから「プラグイン」→「新規追加」に移動し、「Disable XML-RPC-API」と検索してインストールします。プラグインを有効化すると、必要なコードが自動的に適用され、XML-RPCが無効化されます。

ただし、既存のプラグインの中にはXML-RPCの一部を利用しているものもあるため、完全に無効化するとプラグインの衝突が起きたり、サイトの一部機能が正常に動作しなくなる可能性がある点には注意が必要です。

2. 手動でxmlrpc.phpを無効化する

xmlrpc.phpをプラグインではなく手動で削除したい場合は、以下の方法でWordPressに届く前のxmlrpc.phpへのリクエストをすべて遮断できます。

まず、ホスティングのコントロールパネルにあるファイルマネージャーやFTPクライアントを使って .htaccessファイルにアクセスします。

このファイルは隠しファイルになっていることがあるため、「隠しファイルを表示」オプションを有効にする必要があるかもしれません。

.htaccessファイル内に、次のコードを貼り付けてください:

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>

重要!xxx.xxx.xxx.xxx は、xmlrpc.phpへのアクセスを許可したいIPアドレスに変更してください。アクセスを許可するIPがない場合は、この行をまるごと削除して構いません。

まとめ

XML-RPCは、WordPressサイトにおけるリモート投稿の手段としては優れたツールでした。しかし、セキュリティ上の脆弱性を抱えており、それが原因で被害を受けたサイト管理者も少なくありません。

サイトの安全性を保つためにも、プラグインを使うか .htaccessファイルを手動で編集して、xmlrpc.phpを完全に無効化することを強くおすすめします。

本サイトのチュートリアルコンテンツは、 Hostingerの編集方針と価値観に基づき作成されています。

Author
著者

Yūto Ōmura

イギリスから日本へ帰国後、翻訳者として8年従事。英国の大学ではメディア・映像を専攻し、以来、日英両言語にて10年以上複数のウェブサイトおよび動画メディアを運営。プライベートでは、料理をしたり、家族で小旅行に行ったりするのが好きです!

お客様の声

コメントを投稿

Please fill the required fields.Please accept the privacy checkbox.Please fill the required fields and accept the privacy checkbox.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.