WordPressでXML-RPCを無効にする方法(安全な方法)

XML-RPCは、ユーザーがサードパーティのアプリ、ツール、サービスを使用してWordPressウェブサイトに接続できる、WordPressのコアAPIです。残念ながら、過去にはハッカーがXML-RPCを悪用してWordPressウェブサイトへのアクセスを試みる方法を見つけてきました。

WPBeginnerでは、何千ものユーザーがWordPressサイトを保護し、XML-RPCを無効にするのを支援してきました。技術的な知識に応じて、さまざまな方法があることがわかりました。

たとえば、.htaccess ファイルにアクセスするか、コードスニペットを追加することで XML-RPC を無効にすることができます。一方、初心者であれば、コードを編集せずにコアファイルを無効にするプラグインがあります。

この記事では、さまざまな方法を使用してWordPressでXML-RPCを簡単に無効にする方法を説明します。

WordPressでXML-RPCを簡単に無効にする

WordPressにおけるXML-RPCとは?

XML-RPCは、2012年にWordPress 3.5がリリースされて以来、デフォルトで有効になっているWordPressのコアAPIです。これにより、開発者はXMLとHTTPSプロトコルを使用して、WordPressウェブサイトに接続し、操作することができます。

要するに、XML-RPCを有効にすることで、ブログをリモートでアクセスおよび公開できるようになります。たとえば、モバイルアプリを使用してサイトを管理したり、Uncanny AutomatorやZapierなどの自動化サービスに接続したりする場合です。

ただし、ウェブサイトでモバイルアプリを使用していない場合は、一部の WordPressセキュリティ 専門家がXML-RPCを無効にすることを推奨する場合があります。これにより、ウェブサイトをハッキングされる可能性のあるドアが閉じられます。

それはさておき、WordPressでXML-RPC APIを簡単に無効にする方法を見てみましょう。.htaccessメソッドは、リソース消費が最も少ないため最良であり、他のメソッドは初心者にとってより簡単です。

方法1:.htaccessでWordPress XML-RPCを無効にする(上級者向け)

この方法は高度なユーザー向けです。サイトの.htaccessファイルを編集する必要があります。初心者は方法2または3を使用することをお勧めします。

この方法には、自分やチームにリモートアクセスを許可しつつ、他の全員を制限できるという利点があります。また、WordPressに渡される前にXML-RPCリクエストを無効にするため、WordPressのパフォーマンスに悪影響を与えることもありません。

以下のコードを.htaccessファイルに追加する必要があります。これは、FTPクライアントまたはファイルマネージャーを使用してサイトに接続することで実行できます。また、All in One SEOユーザーは、以下のスクリーンショットで確認できるように、プラグインに組み込まれたエディタツールを使用してコードスニペットを追加できます。

# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
 deny from all
allow from 123.123.123.123
</Files>
htaccessからXML-RPCを無効にするにはAIOSEO Proを使用してください

特定のユーザーにサイトへのリモートアクセスを許可したい場合は、5行目の「123.123.123.123」をそのユーザーのIPアドレスに置き換えてください。複数のIPアドレスを追加するには、スペースで区切ります。

または、XML-RPCを完全に無効にしたい場合は、5行目をすべて削除してください。

注意: .htaccessが見つからない場合は、WordPressで.htaccessが見つからない理由に関するガイドを参照してください。

方法 2: コードスニペットで WordPress XML-RPC を無効にする (推奨)

この方法では、WordPressウェブサイトにコードを追加する必要があります。以前にこれを実行したことがない場合は、WordPressでカスタムコードスニペットをコピー&ペーストする方法に関するガイドをご覧ください。

WPCode は、WordPress サイトにコードを追加する最も簡単で安全な方法です。コードスニペットを管理し、エラーでサイトが壊れるのを防ぎます。

この方法では、WPCode の組み込みコードスニペットのいずれかを使用して XML-RPC を無効にします。

まず、 無料のWPCodeプラグインをインストールする必要があります。手順については、WordPressプラグインのインストール方法に関するステップバイステップガイドをご覧ください。

アクティベートしたら、コードスニペット » スニペットを追加に移動してください。WPCodeライブラリには、XML-RPCを無効にするスニペットが既に含まれています。「xml」で検索すると見つかります。

見つけたら、「スニペットを使用」ボタンをクリックする必要があります。

WPCodeライブラリを使用してXML-RPCを無効にする

次に、「アクティブ」トグルを「オン」の位置に切り替える必要があります。

最後に、サイトでスニペットを有効にし、XML-RPC APIを無効にするために「更新」ボタンをクリックしてください。

WPCodeスニペットを「有効化」をクリックして有効にし、「更新」を押してください

方法3:プラグインでWordPress XML-RPCを無効にする

これは、コードスニペットプラグインでウェブサイトに他のカスタマイズを追加したくない場合に使用できる簡単な方法です。

プラグイン「Disable XML-RPC-API」をインストールして有効化するだけです。詳細については、WordPressプラグインのインストール方法に関するステップバイステップガイドをご覧ください。

プラグインはすぐに機能し、XML-RPCを無効にします。

プラグインを設定するには、XML-RPCセキュリティ » XML-RPC設定に移動できます。たとえば、IPアドレスをホワイトリストに登録することで、特定のユーザーがXML-RPCにアクセスできるようにすることができます。

Disable XML-RPC-API プラグインの設定を無効にする

WordPress XML-RPC が無効になっていることをテストする

これで、WordPressウェブサイトでXML-RPC APIが正常に無効になったことを確認する必要があります。

また、ブラウザでURL http://example.com/xmlrpc.php にアクセスするだけで、XML-RPCが無効になっていることを確認できます。「example.com」はご自身のウェブサイトのドメイン名に置き換えてください。

XML-RPCが無効になっている場合、「Forbidden: You don’t have permission to access this resource.」というエラーメッセージが表示されるはずです。

この記事がWordPressでXML-RPCを簡単に無効にする方法を学ぶのに役立ったことを願っています。また、WordPressにJavaScriptを簡単に追加する方法最高のWordPress開発ツールに関するガイドもご覧ください。

この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterFacebookでもフォローできます。

開示:当社のコンテンツは読者によってサポートされています。これは、当社のリンクの一部をクリックすると、当社が手数料を得る可能性があることを意味します。WPBeginnerがどのように資金提供されているか、それがなぜ重要か、そしてどのように私たちをサポートできるかについては、こちらをご覧ください。当社の編集プロセスはこちらです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

46 CommentsLeave a Reply

  1. スニペットをありがとうございます。結局、WPCodeを使用してXML-RPCを無効にしました。それが最も簡単な方法のように思え、XML-RPCを簡単に元に戻すこともできます。素晴らしい!

  2. htaccessでは、次の行:
    allow from 123.123.123.123
    は私のIPアドレスで編集する必要があるように見えます。しかし、これはどこにも明記されていません—?

    • ブロックは機能へのアクセスを制限しようとしますが、無効にすると完全にオフになります。無効にすれば、別の方法でアクセスされる心配はありません。

      管理者

  3. 推奨されているプラグインDisable XML-RPCは、過去2年間更新されていません。WordPressの最新3つのリリースでテストされていないと表示されています。

  4. こんにちは、

    xmlrpc.phpへのアクセスを無効にすると、Android/iOSアプリ開発に使用されるWordPress APIへのアクセスも無効になりますか?

  5. 解決策が見つかりました:
    nginx設定に以下の情報を追加します:
    # nginx xmlrpc.phpリクエストブロック
    location /xmlrpc.php {
    deny all;
    }

  6. Apacheの代わりにnginxを使っています。.htaccessは引き続きサイトで使用できますか?
    また、このファイルをpublic_htmlディレクトリに保存する必要がありますか、それともその一つ上の階層に保存する必要がありますか?

  7. なぜ 123.123.123.123 を許可するのですか?

    サービスをまったく使用していない場合、「すべて拒否」を絶対的なものにしないのはなぜですか?

    • コードを正しく読み取れているとすれば、
      order deny,allow – deny を allow より前に配置します。deny は「すべて」なので、allow は処理されません。
      deny from all – そのままの意味です。
      allow from 123.123.123.123 – プレースホルダーです。

      固定IPアドレスをお持ちの場合は、順序を「許可、拒否」に変更し、123.123.123.123を自分のIPアドレスに置き換えることができると理解しています。これにより、自分のIPは許可され、他のすべては拒否されます。

  8. Thanks WP-Beginner, I’m trying to be baddest WP boy in my neighbourhood and this is exactly why I keep coming back to you guys, each question I have you say; here is the easy way, and here is the RIGHT way :-)

    私と私の.htaccessは、htpasswrdと、クライアントが決して必要としないであろうこのXMLRPCの件について、少し話し合うことになります。

    皆さんのおかげで、私のネットの片隅が少し安全になりました。MailChimpの言葉を借りれば、「ハイタッチ!」です。

  9. OK、このコードを使用しますが、IFTTTが私のウェブサイトで機能するようにしたいのですが、何を追加する必要がありますか?

    # WordPressのxmlrpc.phpリクエストをブロックする

    order deny,allow
    deny from all
    allow from 123.123.123.123

  10. こんにちは、

    .htaccessを使用してxmlrpc.phpファイルをブロックする手順に従いましたが、機能しているかどうかわかりません。

    Wordfence Securityを使用しており、ライブトラフィックビューでxmlrpc.phpファイルへのリクエストが停止していることがわかりますが、アクセスログを確認すると

    tail -f /apache2/logs/access_log

    リクエストはまだ受信していますが、末尾のコードが 500 から 403 に変更されました。WordFence プラグインから誤ったレポートを受け取っており、まだスパムが大量に送信されているのではないかと心配しています。誰かアドバイスをいただけますか?

    ありがとう、

    フィルB

    • ああ、そうです!うまくいっていますね。XMLRPC は禁止されています!

      HTTP ステータスコード 403: サーバーはリクエストを理解しましたが、承認を拒否しました。

  11. 奇妙な問題が発生しました…

    私はIFTTTでWordPressブログを使用しており、すべて正常に動作していましたが、MaxCDNと統合したところ、IFTTTはすぐに動作しなくなりました。調査したところ、問題は無効化されたXML-RPCに関連している可能性があります。

    ダッシュボードの「設定」>「書き込み」を確認しても、XML-RPC、リモートパブリッシングなどの項目は見当たりません。optionsのデータベースも確認しましたが、xml-rpcは利用できません/見つかりません。

    IFTTTを機能させるためにはXML-RPCを有効にする必要があります。

    XML-RPCを再アクティブ化するにはどうすればよいですか?必要なのは、XML-RPCをアクティブ化するために.htaccessまたはfunctions.phpに追加できるスクリプトだけです。

    そして、なぜダッシュボードでXML-RPCの機能が失われているのですか?

    ありがとうございます!

  12. WordPressにこのファイルxmlprc.phpを追加する方法を検索していました。WordPressのバージョンは4.5.3を使用しており、このページにたどり着きました。Jetpackを有効にするとsite_inaccessibleというエラーが発生するため、このPHPファイルを追加する必要があります。このエラーを解決する方法を教えてください。私のサイトは

    • FTP クライアントまたは cPanel のファイルマネージャーを使用して WordPress サイトに接続します。ウェブサイトのルートディレクトリで xmlrpc.php ファイルを探します。もしファイルが存在する場合は、ステップ 2 を試してください。存在しない場合は、WordPress の新しいコピーをダウンロードしてください。解凍して展開し、xmlrpc.php ファイルをサイトのルートディレクトリにアップロードし直してください。

      ステップ2:WordPressテーマのfunctions.phpファイルで、XML-RPCを無効にするコードを確認します。

      ステップ3:.htaccessファイルとwp-configファイルを確認してください。

      管理者

  13. サイトでxmlrpcを有効にするにはどうすればよいですか?スマートフォンでWordPressモバイルアプリを使用してログインできません。

  14. やった!このWPフィルターでスクリプトキディ攻撃が修正されました。まだその人物をファイアウォールでブロックしていますが、もっとIPをファイアウォールに追加するために、ホークのようにログを監視する必要はありません。ありがとうございます。

  15. xmlrpc.php を /etc/httpd/conf/includes/pre_main_global.conf ファイルでサーバー全体で無効にすることには完全に賛成です。しかし、次のような疑問が残ります…特定のプラグインが動作するために xmlrpc.php を「必要」としているかどうかを判断する方法はありますか?アクセスをブロックした結果、2か月後に問題が発生し、その原因が以前に xmlrpc.php をブロックしたことにあると気づかないのではないかと懸念しています。

    ログファイルなどで、xmlrpc.php ブロックが原因であることを示す一般的な兆候はありますか?

  16. Android スマートフォンで WordPress アプリを使用して投稿しています。現在ログインできず、ログイン情報も正しいです。得られた応答は「ログインできません。WordPress サイトに接続できませんでした」でした。この WordPress アプリのログインエラーを修正するのを手伝ってもらえませんか。

    • XML RPC を無効にしていた場合、WordPress モバイルアプリでログインできない可能性があります。テーマの functions.php ファイルでこのコードを探してください。

      add_filter('xmlrpc_enabled', '__return_false');

      それがある場合、削除する必要があります。また、プラグインを無効にしてから、WordPressモバイルアプリでログインできなくなる原因となっているプラグインを見つけるまで1つずつ有効にすることも試すことができます。

      管理者

  17. 「allow from 123.123.123.123」はオプションであり、使用する場合は、ご自身のIPアドレス、またはxmlrpc.phpにアクセスする必要があるデバイスのIPアドレスを含めるように更新する必要があります(この記事で例を引用すると良いでしょう)。

  18. XML-RPCを無効にするためにGoodbyeCaptchaプラグインを使用しており、Jetpackが有効な状態でも問題なく動作しています。
    お役に立てば幸いです

  19. 申し訳ありませんが、この方法は何度も試しましたが、私にはうまくいきませんでした。実際、これらのコードを.htaccessファイルに追加した後、フロントエンドがダウンしました(訪問者がウェブページへのアクセスをブロックしました)。

  20. Keith さん、WordPress では、テーマに関連しない機能を functions.php ファイルから「サイト固有のプラグイン」に移動する傾向があります。これは基本的に、1つのユニークなウェブサイトにのみアクティブ化するプラグインで、そのサイトのテーマに関連しない機能を格納します。

    コードを functions.php ファイルに配置することで、同じことを達成できます。

  21. 皆さん、こんにちは。
    少し鈍くてすみませんが、「次のコードをサイト固有のプラグインに貼り付けるだけです」について詳しく説明していただけますか?

    どのプラグインがサイト固有ですか?

返信する

コメントを残していただきありがとうございます。すべてのコメントは、当社のコメントポリシーに従ってモデレーションされますので、ご了承ください。メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で有意義な会話をしましょう。