最近、読者から「WordPress サイトで REST API を無効にするにはどうすればよいですか?」という質問を受けました。そして正直なところ、それはもっともな懸念事項です。
WordPressバージョン4.4でJSON REST APIがリリースされたとき、それは開発者にとって多くの可能性を開きました。
ただし、これらの高度な機能が必要ない多くのサイトオーナーにとって、API は不要な追加機能であり、サイトをセキュリティリスクにさらす可能性があるように思えるかもしれません。
この記事では、WordPressでJSON REST APIを簡単に無効にする方法をご紹介します。

WordPressでJSON REST APIを無効にする理由
APIにはWordPress開発者にとって多くのメリットがあることは否定できません。APIを使用すると、GETリクエストを使用してデータを非常に簡単に取得でき、これはWordPressでアプリを構築している人にとって役立ちます。
とはいえ、これによりウェブサイトが新しいDDoS攻撃の前面にさらされる可能性があります。また、リソースを大量に消費し、WordPressウェブサイトを遅くする可能性もあります。
JSON REST APIを無効にすることは、XML-RPCを無効にすることに似ており、多くのサイト管理者は安全のためにWordPressサイトで無効にしています。
それでも、WordPressでJSON REST APIを簡単に無効にするための2つの方法を紹介します。使用したい方法にジャンプするには、以下のクイックリンクを使用してください。
方法1. コードで WordPress の JSON REST API を無効にする (推奨)
WordPressの機能を変更する場合、コードスニペットを使用するのが最善の方法であることがよくあります。しかし、テーマのfunctions.phpファイルを直接編集すると危険であり、正しく行われないとサイトが破損する可能性があります。
そのため、WordPressでJSON REST APIを無効にするには、WPCodeプラグインを使用することをお勧めします。
これは、テーマファイルを編集せずに、WordPressにカスタムコードを安全に追加するために、私たち自身のウェブサイト全体で使用しているのと同じプラグインです。
プラグインの使用方法の詳細については、WPCodeの完全レビューをご覧ください。

さらに、WPCodeには、REST APIの無効化、XML-RPCの無効化など、一般的な機能リクエストに対応した検証済みのコードスニペットを含む、組み込みのコードライブラリが付属しています。
これにより、さまざまなタスクのために複数の単一目的プラグインをインストールする必要がなくなります。
開始するには、無料のWPCodeプラグインをインストールしてアクティブ化する必要があります。手順については、WordPressプラグインのインストール方法に関するガイドをお読みください。
注意: WPCodeの無料バージョンには、WordPressにカスタムコードを簡単に追加するために必要なすべてが含まれています。ただし、プライベートクラウドスニペットライブラリ、ページおよびデバイス固有のスニペット、コードリビジョンなどの高度な機能が必要な場合は、WPCode Proにアップグレードできます。
プラグインを有効化したら、WordPressダッシュボードからCode Snippets » Libraryに移動します。
次に、「WordPress REST APIを無効にする」スニペットを検索し、「スニペットを使用」ボタンをクリックします。

プラグインはコードを自動的に追加し、適切な挿入方法も選択します。

「非アクティブ」から「アクティブ」にスイッチを切り替えるだけです。
次に、「更新」ボタンをクリックします。

これで、WordPressサイトでJSON REST APIが無効になりました。
方法2. プラグインを使用して WordPress で JSON REST API を無効にする
専用プラグインの助けを借りて、JSON REST API を簡単に無効にすることもできます。
まず、Disable REST APIプラグインをインストールしてアクティブ化する必要があります。詳細については、WordPressプラグインのインストール方法に関するステップバイステップガイドをご覧ください。
このプラグインはすぐに機能し、設定を構成する必要はありません。
有効化すると、プラグインは、ウェブサイトにログインしていないソースからの API リクエストに対して、認証エラーを強制的に返します。
これにより、REST APIを使用してウェブサイトから情報を取得する不正なリクエストを効果的に防止できます。
http://example.com/wp-jsonページにアクセスしてテストできます。最初にWordPress管理エリアからログアウトするか、ブラウザをシークレットモードに切り替えてください。
example.comを独自のドメイン名に置き換えることを忘れないでください。REST APIリクエストがブロックされていることを示すこのメッセージが表示されます。

これで、WordPress サイトで不正な REST API リクエストを正常に無効化できました。
WordPressでREST APIリンクをコードで無効にする代替方法
WordPress REST APIを無効にする代わりに、REST APIリンクのみを無効にすることを選択できます。これにより、REST APIを完全にオフにすることなく、WordPressサイトのソースコードからAPIエンドポイントを非表示にできます。
この方法では、すべてのWordPress機能を通常どおり機能させながら、エンドポイントを見つけにくくすることでセキュリティを向上させることができます。REST APIの機能が必要なテーマやプラグインを破損することなくセキュリティを追加するため、開発者の間で人気のある選択肢です。
これを行うには、WPCodeプラグインをインストールしてアクティブ化する必要があります。ヘルプが必要な場合は、WordPressプラグインのインストール方法に関するチュートリアルをご覧ください。
有効化したら、WordPressダッシュボードからコードスニペット » ライブラリに移動してください。
そこから、「無効にする REST API リンク」スニペットを検索します。見つけたら、カーソルを合わせて「スニペットを使用」ボタンをクリックします。

その後、WPCodeは自動的にコードスニペットを追加し、適切な挿入方法を選択します。

これで、トグルを「非アクティブ」から「アクティブ」に切り替えるだけです。
最後に、「更新」ボタンをクリックします。

それだけです。これで、WordPressウェブサイトでREST APIリンクが無効になります。
この記事がWordPressでJSON REST APIを無効にする方法を学ぶのに役立ったことを願っています。セキュリティを意識したユーザーは、WordPress管理エリアの保護に関するヒントを確認したり、最高のWordPressバックアッププラグインの専門家による選択肢を確認したりすることもできます。
この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterやFacebookでも私たちを見つけることができます。


デニス・ムトミ
あなたが概説された2つの方法、特にWPCodeを使用したコードベースのアプローチに特に感謝しています。サイトオーナーとして、APIの利点から無効にすることをためらっていましたが、潜在的なセキュリティリスクについてのあなたの説明は再考を促しました。
WPCodeプラグインとそのカスタムコードスニペットを安全に管理する機能に興味があります。単一目的のプラグインでサイトを散らかすことなく、他のWordPressのカスタマイズを実装するために、このツールをさらに詳しく調べるつもりです。
これに感謝します。WPBeginnerは最高です!
Dayo Olobayo
WordPressでJSON REST APIを無効にするこのチュートリアルの明確さに感謝します。しかし、ウェブサイトの機能や他のサービスとの連携における潜在的なメリットを考えると、APIを完全に無効にすることが最善のアプローチかどうか疑問に思います。
WPBeginnerサポート
サイトの所有者にとって、それが自分のニーズに最適かどうか、またはそれを使用中に問題が発生したかどうかは、サイトの所有者次第です。
管理者
Dayo Olobayo
ありがとう。所有者固有のニーズと状況を考慮して、JSON REST API の潜在的なセキュリティリスクとメリットを比較検討することが不可欠であると理解しています。
イジー・ヴァネック
Dayo Olobayo様
質問は、このAPIを使用するかどうかという点です。XML-RPCと同じです。私は自分のウェブサイトでは使用していないため、無効にしました。もちろん、これにより、例えばXML-RPCを使用して接続するWordPressモバイルアプリなどからウェブサイトに接続できなくなります。これは常に、無効にしたいものと許可したいものの間の妥協です。外部からのリクエストを受け付けるAPIは潜在的なリスクになり得るため、使用するかどうかは単に問題です。
RJW
本番環境にインストールする前に、開発環境で無効化プラグインを試してみてください。インストールすると一部の機能が壊れることがわかりました。
WPBeginnerサポート
多くの異なるプラグインやツールがあり、テスト環境がある場合は、新しいプラグインとそのサイトとの相互作用をテストすることは間違いなく良いでしょう。
管理者
Ricky
上記のコメント投稿者と同様に、Pingdomやその他のテストサイトを使用する際に「wp-json」リクエストに気づきました。残念ながら、私のサイトでは読み込みに10秒以上かかります(本当に!!)。これがウェブサイト全体の読み込み時間を押し上げており、修正方法がわかりません。プラグインは何も変更しません。何か提案はありますか?
ジャニス
ウェブサイトで実際にJSON APIが有効になっているかどうかはどうすればわかりますか?
この記事は、必要であればJSON APIを削除する方法について書かれており、参考になります。しかし、多くの警告に驚かされた経験がありますが、結局は自分には関係のないことだと判明しました。
WPBeginnerサポート
こんにちは、Janiceさん、
WordPress.org のセルフホストサイトをご利用の場合、ウェブサイトで JSON REST API を利用できます。
管理者
ローガン・ケール
単純なタスクのためにさらにプラグインを追加するのが嫌で、functions.phpファイルに以下のコードスニペットを追加することでこの機能を無効にできることがわかりました。
add_filter(‘rest_enabled’, ‘_return_false’);
add_filter(‘rest_jsonp_enabled’, ‘_return_false’);
マルガリット・コカ
ありがとう、このページを訪れたときに探していた答えです。
ボビー・C。
ありがとうございます!要点を押さえています。
ハリ
このコードを探していました。動作しました、ありがとう。プラグインを追加するのはあまり好きではありません。
マイケル
ご協力ありがとうございます。私のプラグインには「新規追加」オプションがありません。
WPBeginnerサポート
おそらくWordPress.comをご利用です。セルフホスト型WordPress.orgと無料のWordPress.comブログの違いに関するガイドをご覧ください。
管理者
リン
Thank you! Spot on
worked for me
J.L.
これはセルフホストのブログのみですか、それとも無料のブログサイトも含まれますか?ほとんどのプラグインは、セルフホストでない場合はすでに完了しています。
PS 購読はしていません…返信が欲しいだけです
WPBeginnerサポート
これはWordPress.orgのセルフホストサイト専用です。
管理者
エレイン
サイトにREST APIが搭載されているか確認するにはどうすればよいですか?初期設定時に多くの追加機能をオフにしたのですが、現在どこを見れば搭載されているか確認できるかわかりません。不必要にプラグインをダウンロードしたくありません。
WPBeginnerサポート
エレインさん、
REST API がサイトで有効になっているかどうかは、example.com/wp-json のような URL にアクセスして確認できます。これを行う前に、WordPress からサインアウトしていることを確認してください。プレーンテキストで多くの情報が表示される場合は、REST API がサイトで有効になっていることを意味します。無効にするには、上記の指示に従ってください。
管理者
サランシュ・ジェイン
JetpackプラグインでJSON REST APIを無効にするオプションはどうですか?
ケン・ダウリング
REST APIを無効にすることは、WooCommerceのようなeコマースサイトに適していますか?WooCommerceはREST-APIをかなり使用していると理解しています。
さらに、私の購入者は購入するためにログインする必要はありません。REST API呼び出しが拒否された場合、トランザクションはどうなりますか?
敬具、ケン
D. ジョー・チャフィン
プラグインを有効にしても無効にしても、WP 4.7.2 では私には何も変わりません。example.com/wp-json (「example」を自分のドメインに置き換えてください) のページには、私のサイトの設定が大量に表示されます。
D. ジョー・チャフィン
うーん。よく見ると、Safari でのみリストが表示され、Mac 用の Chrome と Firefox では、この投稿で指定されている期待されるメッセージが表示されます。
WPBeginnerサポート
こんにちは、
example.com/wp-json ページをテストする前に、WordPress 管理画面からログアウトしているか、シークレットモードを使用していることを確認してください。このプラグインは、権限のないユーザーからのページへのアクセスのみを無効にします。管理者としては、引き続き表示できます。
管理者
D. ジョー・チャフィン
恥ずかしい…おっしゃる通りです。
オードラ・カーペンター
皆さん、こんにちは。
まず、あなたの活動に本当に感謝します!あなたからWordPressについて多くのことを学び、多くの人をあなたのサイトに紹介しました!
OK、プラグインをインストールしましたが、上記で提案されているものが表示されません。情報がフルスクリーンで表示されていますが…?
ご意見は?
ありがとうございます!
WPBeginnerサポート
こんにちは、Audraさん
テストするには、ログアウトするかシークレットウィンドウを使用してください。このプラグインは、ログインしていないユーザーからのアクセスのみを無効にします。
管理者
トレジャー
これらの手順を実行しましたが、例などで確認したところ、上記で表示された応答ではなく、コードが2ページ表示されました。うーん、どうすればいいかわかりません。
トレジャー
はい、もう一度やってみたら正しいメッセージが表示されました。ありがとうございます!
ダグ・ニックス
テストを実行したところ、画面に大量のデータが表示されたため、失敗したと思います。何がうまくいかなかったのか、何か考えはありますか?プラグインは説明通りにインストールしました…
ダグ・ニックス
シークレットウィンドウで確認したところ、完璧に動作しました。認証済みユーザーと未認証ユーザー(匿名ユーザー)に関する説明をありがとうございます。
ローラ・ジールケ
完璧に動作しました。ありがとうございます!
カール
XMLRPCを無効にするフックだけでなく、ヒントもありがとうございます。
REST APIにもフィルターフックの可能性はありますか?
アンドリュー
pingdom.com を使ってサイトの速度をチェックしたところ、最初に読み込もうとした HTML エントリで、リンクが mydomain.com/wp-json と表示され、「待機」時間が2秒を超えています。これはこの記事で述べられていることと同じですか? 将来的に使用されることを想定して、無効にすることにはためらいがあります。ページ上の何かを読み込むのに2秒以上の遅延が発生する理由について、何か考えはありますか?
スティーブン・クローニン
REST APIは、プラグインやテーマがフロントエンドからサーバーへAjaxコールを行うための標準的な方法になり、admin-ajaxに取って代わるため、無効にしない方が良いでしょう… gracefulに失敗することを期待しますが、機能の一部を失うことになるでしょう。
Also, if you really want to protect against DDoS attacks, you better disable html as well!
レザ
WordPress REST API で発見された重大なセキュリティ脆弱性により、50,000 件の WordPress ウェブサイトがハッキングされました。
ジム・S・スミス
痛っ!
それは知っておくべきことですね。サイトのログに多くのアクセス試行を noticed しています。
さらに、
WordPress の担当者は、REST API をどの程度公開するか、あるいはまったく公開しないかをユーザーが決定できるようにする点で、もう少し努力できたと思います。
再度、
これについてもっと言うと、「開発者はユーザーのニーズをユーザー自身よりもよく知っている!」ということです。また、私のサイトでは使用していないにもかかわらず、EMOJI や fonts.google.com からのリモートロードされたフォントをサポートすることを強制されたことにもあまり満足していませんでした!
REST APIは(一部の)実際のWebアプリケーション開発者にとっては恩恵かもしれませんが、これを使用する可能性が非常に低い私たち残りはどうなるのでしょうか???
ケイシー
プラグインがこの機能を使用している可能性はどのくらいありますか?例えば、お問い合わせフォームなどがこれを利用しているのでしょうか?何か壊れるのが心配なので、無効にするのは気が進みません。
WPBeginnerサポート
プラグインは、使用していてオフになっている場合、ほとんどの場合通知するでしょう。
管理者