WordPressのxmlrpc.phpに関する完全ガイド(概要、セキュリティリスク、無効にする方法)
公開: 2020-07-06XML-RPC WordPress仕様は、異なるシステム間の通信を標準化するために開発されました。つまり、WordPressの外部のアプリケーション(他のブログプラットフォームやデスクトップクライアントなど)がWordPressと対話できるようになりました。
この仕様は、WordPressの開始以来の一部であり、非常に有用な仕事をしました。 それがなければ、WordPressはインターネットの他の部分から分離された独自のサイロにあったでしょう。
ただし、xmlrpc.phpには欠点があります。 WordPressサイトに脆弱性をもたらす可能性があり、WordPressを他のアプリケーションに開放するというはるかに優れた仕事をするWordPressRESTAPIに取って代わられました。
この投稿では、xmlrpc.phpとは何か、なぜ無効にする必要があるのかを説明し、WordPressサイトで実行されているかどうかを識別するのに役立ちます。
準備? 飛び込みましょう!
xmlrpc.phpとは何ですか?
XML-RPCは、WordPressと他のシステム間の通信を可能にする仕様です。 これは、トランスポートメカニズムとしてHTTPを使用し、エンコードメカニズムとしてXMLを使用して、これらの通信を標準化することによって実現されました。
XML-RPCはWordPressよりも前のものです。2003年にWordPressを作成するためにフォークされたb2ブログソフトウェアに存在していました。システムの背後にあるコードは、サイトのルートディレクトリにあるxmlrpc.phpというファイルに保存されています。 そして、XML-RPCはほとんど時代遅れですが、それはまだそこにあります。
WordPressの初期のバージョンでは、XML-RPCはデフォルトでオフにされていました。 ただし、バージョン3.5以降、デフォルトで有効になっています。 これの主な理由は、WordPressモバイルアプリがWordPressインストールと通信できるようにすることでした。
バージョン3.5より前のWordPressモバイルアプリを使用した場合、アプリがコンテンツを投稿できるようにするには、サイトでXML-RPCを有効にする必要があることを思い出してください。 これは、アプリがWordPress自体を実行していなかったためです。 代わりに、xmlrpc.phpを使用してWordPressサイトと通信する別のアプリでした。
しかし、XML-RPCが使用されたのはモバイルアプリだけではありませんでした。WordPressと他のブログプラットフォーム間の通信を可能にするためにも使用され、トラックバックとピンバックを有効にし、セルフホストのWordPressをリンクするJetpackプラグインを強化しました。 WordPress.comへのサイト。
ただし、REST APIがWordPressコアに統合されたため、xmlrpc.phpファイルはこの通信には使用されなくなりました。 代わりに、REST APIを使用して、WordPressモバイルアプリ、デスクトップクライアント、他のブログプラットフォーム、WordPress.com(Jetpackプラグイン用)、および他のシステムやサービスと通信します。 REST APIが対話できるシステムの範囲は、xmlrpc.phpで許可されているものよりもはるかに大きくなります。 また、はるかに柔軟性があります。
REST APIはXML-RPCに取って代わったため、サイトでxmlrpc.phpを無効にする必要があります。 理由を見てみましょう。
xmlrpc.phpを無効にする理由
WordPressサイトでxmlrpc.phpを無効にする必要がある主な理由は、セキュリティの脆弱性が発生し、攻撃の標的になる可能性があるためです。
XML-RPCがWordPressの外部と通信する必要がなくなったので、それをアクティブに保つ理由はありません。 そのため、サイトを無効にして、サイトをより安全にすることが賢明です。
xmlrpc.phpがセキュリティ上の責任であり、それがもはや機能しない場合、なぜそれはWordPressから完全に削除されなかったのですか?
これは、WordPressの重要な機能の1つが常に下位互換性であるためです。 サイトを適切に管理している場合は、WordPressを最新の状態に保つこと、およびプラグインやテーマが不可欠であることをご存知でしょう。
ただし、WordPressのバージョンを更新したくない、または更新できないWebサイトの所有者は常に存在します。 REST APIより前のバージョンを実行している場合でも、xmlrpc.phpにアクセスする必要があります。
特定の脆弱性について詳しく見ていきましょう。
XML-RPCピンバックを介したDDoS攻撃
xmlrpc.phpが有効にした機能の1つは、ピングバックとトラックバックでした。 これらは、別のブログまたはサイトがコンテンツにリンクしているときにサイトのコメントに表示される通知です。
XML-RPC仕様がこの通信を可能にしたものでしたが、それはREST APIに置き換えられました(すでに見たように)。
サイトでXML-RPCが有効になっている場合、ハッカーはxmlrpc.phpを悪用して、サイトに大量のpingbackを短時間で送信することにより、サイトにDDoS攻撃を仕掛ける可能性があります。 これにより、サーバーが過負荷になり、サイトが機能しなくなる可能性があります。
XML-RPCを介したブルートフォース攻撃
xmlrpc.phpはリクエストを行うたびに、認証用のユーザー名とパスワードを送信します。 これは重大なセキュリティ上の責任を示し、RESTAPIが実行しないことです。 実際、REST APIは、ユーザー名やパスワードの代わりに認証用のトークンを送信するOAuthを使用します。
xmlrpc.phpはリクエストごとに認証情報を送信するため、ハッカーはそれを使用してサイトへのアクセスを試みる可能性があります。 このようなブルートフォース攻撃により、コンテンツの挿入、コードの削除、またはデータベースの損傷が発生する可能性があります。
攻撃者がサイトに十分な数のリクエストを送信し、それぞれが異なるユーザー名とパスワードのペアを使用している場合、攻撃者が最終的に正しいリクエストをヒットして、サイトへのアクセスを許可する可能性があります。
そのため、REST APIを使用して外部システムと通信する最新バージョンのWordPressを実行している場合は、 xmlrpc.phpを無効にする必要があります。 それは必要ではなく、あなたのサイトを脆弱にする可能性があります。
xmlrpc.phpはWordPressサイトで実行されていますか?
最初に行う必要があるのは、xmlrpc.phpがWordPressサイトで実行されているかどうかを識別することです。
これは、ファイルが存在するかどうかを確認する単純なケースではありません。これは、すべてのWordPressインストールの一部であり、XML-RPCが無効になっている場合でも存在します。
サイトでxmlrpc.phpが有効になっているかどうかを確認するには、WordPressXML-RPC検証サービスを使用します。 これにより、サイトがチェックされ、xmlrpc.phpが有効になっているかどうかがわかります。

サービスでこのサイトをチェックしたときに得た結果は次のとおりです。

これは、kinsta.comでxmlrpc.phpが無効になっていることを示しています。 それで、チェックを実行して、xmlrpc.phpがまだサイトで有効になっていることを発見した場合、どのようにそれをオフにしますか?
xmlrpc.phpを無効にする方法
xmlrpc.phpを無効にする方法は3つあります。
それぞれを個別に見てみましょう。
プラグインでxmlrpc.phpを無効にする方法
プラグインをインストールしてxmlrpc.phpを無効にするのが、これを行う最も簡単な方法です。 Disable XML-RPCプラグインは、それを完全に無効にします。 使い方は次のとおりです。
私の出発点は、xmlrpc.phpが有効になっている自分のWebサイトです。 あなたは私がしたチェックを通してこれを見ることができます:

WordPress管理者のプラグイン画面からプラグインをインストールし、アクティブ化します。
他に何もする必要はありません。プラグインをアクティブにすると、XML-RPCが無効になります。 ここで、自分のサイトでチェックを実行すると、別の結果が得られます。

とても簡単です!
プラグインでXML-RPCピンバックを無効にする
しかし、xmlrpc.phpの一部の側面を無効にし、他の側面を無効にしたい場合はどうでしょうか。 [XML-RPC Pingbackを無効にする]プラグインを使用すると、pingback機能のみを無効にできます。つまり、必要に応じてXML-RPCの他の機能に引き続きアクセスできます。
プラグインは、Disable XML-RPCプラグインと同じように機能します。インストールしてアクティブ化するだけで、機能します。
プラグインを使用してXML-RPCおよびRESTAPIアクティベーションを構成する
xmlrpc.phpとRESTAPIの両方がサイトでどのように構成されているかをよりきめ細かく制御したい場合は、RESTXML-RPCデータチェッカープラグインをインストールできます。
このプラグインをインストールしてアクティブ化したら、 [設定]> [REST XML-RPCデータチェッカー]に移動し、[ XML-RPC ]タブをクリックします。

これにより、xmlrpc.phpのどの側面がサイトでアクティブであるかを正確に構成できます。
非常に高速で、安全で、開発者に優しいホスティングが必要ですか? KinstaはWordPress開発者を念頭に置いて構築されており、豊富なツールと強力なダッシュボードを提供します。 私たちの計画をチェックしてください
または、単に完全にオフにすることもできます。 また、REST APIも制御したい場合は、プラグインがそのための別のタブを提供します。
プラグインなしでxmlrpc.phpを無効にする方法
サイトに別のプラグインをインストールしたくない場合は、フィルターまたは.htaccessファイルにコードを追加してxmlrpc.phpを無効にすることができます。 両方の方法を見てみましょう。
フィルタを介してxmlrpc.phpを無効にする
ここでのオプションは、 xmlrpc_enabledフィルターを使用してxmlrpc.phpを無効にすることです。 この関数をプラグインに追加し、サイトでアクティブ化します。
add_filter( 'xmlrpc_enabled', '__return_false' );
これをテーマ関数ファイルに追加することもできますが、プラグインを作成することをお勧めします。
もう1つのオプションは、FTPまたはcPanelを介してサイトのサーバーに接続することにより、Apacheを使用するホスティングプロバイダーで利用可能な.htaccessファイルを編集することと関係があります。
.htacessファイルを介してxmlrpc.phpを無効にします
.htaccessファイルに、次のコードを追加します。
<Files xmlrpc.php> Order Allow,Deny Deny from all </Files>
問題が発生した場合に備えて、作成する前に必ず古いファイルのコピーを作成してください。
ホスティングプロバイダーにxmlrpc.phpを無効にしてもらいます
または、攻撃が検出された場合、一部のホスティングプロバイダーはxmlrpc.phpを無効にします。
Kinstaでは、XML-RPCを介した攻撃が検出されると、コードのスニペットがNginx.configファイルに自動的に追加されます。
location ~* ^/xmlrpc.php$ { return 403; }
これにより、403エラーが生成され、そのトラックでの攻撃が停止します。
これを自分で行う場合は、上記の方法のいずれかを使用するのが最善です。 ただし、その前に、必ず最初にホスティングプロバイダーに確認してください。
いつxmlrpc.phpを有効にする必要がありますか?
WordPressサイトでxmlrpc.phpを有効にする必要がある場合や、完全に無効にすべきでない場合があります。
これらは:
- REST APIを実行していませんが(推奨されていませんが、状況によっては必要です)、WordPressサイトと他のシステムとの間で通信する必要があります。
- WordPressをバージョン4.4以降に更新できないため、RESTAPIにアクセスできません。 これは、ホスティング設定の制限(この場合はホスティングプロバイダーを変更します)またはテーマまたはプラグインの非互換性(この場合はそれらを置き換えるか更新します)が原因である可能性があります。
- WP REST APIにはアクセスできないが、XML-RPCにはアクセスできる外部アプリケーションを使用しています(長期的には、そのアプリケーションを更新するか、REST互換アプリケーションに切り替えることをお勧めします)。
それでおしまい! これらのどれも、XML-RPC仕様をオンにしたままにするための特に良い理由ではありません。
それがまだWordPressにある唯一の理由は、下位互換性のためであり、古いシステムで作業している場合にのみ使用します。 サイトを最新の状態に保ち、最新のテクノロジーを使用したい場合は、xmlrpc.phpを無効にするのが最善の方法です。
概要
XML-RPC仕様は、WordPressが外部のシステムやアプリケーションと通信するための手段として、WordPressが作成される前に開発されました。 固有のセキュリティ上の欠陥があり、サイトが攻撃に対して脆弱になる可能性があります。
REST APIを使用してサイトが他のアプリケーションと通信できるようになったので、xmlrpc.phpを安全に無効にできます。 上記の手順に従うと、無効にすることでサイトのセキュリティが向上します。