ラッコサーバー

ラッコサーバーでサイトを管理すると売却時の価値を高く保てます!
サイト/ドメインの売却をシームレスに実現します。

ラッコサーバー詳細
オンライン事業売買
WordPressサイト売買
ドメイン売買
データを読み込み中...
データを読み込み中...
データを読み込み中...

【WordPress】REST APIを無効化してセキュリティリスクを減らす方法(Disable WP REST API)

WordPressのREST APIって、外部から誰でもアクセスできるって本当…?セキュリティが心配になってきました…

WordPressのREST APIは未ログインの第三者でも実行できるため、無効化しておくと不正アクセスや情報収集の芽を摘めます。この記事でわかることは次の3点です。

  • REST APIを無効化する2つの方法(プラグイン/コード)
  • 無効化によるメリット・デメリット
  • 無効化する前に必ず確認すべきこと

「とにかく安全に無効化したい」という方は、コード不要でログイン中の管理機能を壊さない方法1:プラグイン「Disable WP REST API」から読み進めてください。

ラッコサーバー

ラッコサーバーでサイトを管理すると売却時の価値を高く保てます!
サイト/ドメインの売却をシームレスに実現します。

ラッコサーバー詳細
オンライン事業売買
WordPressサイト売買
ドメイン売買
データを読み込み中...
データを読み込み中...
データを読み込み中...

WordPress REST APIとは?無効化を検討する前に知っておきたいこと

まずは「そもそもREST APIとは何か」「なぜ無効化が話題になるのか」を押さえておきましょう。ここを理解しておくと、無効化すべきかどうかを自分のサイトに当てはめて判断できますよ。

REST APIは、WordPressに保存された投稿・ページ・ユーザーなどのデータを、JSON形式で外部とやり取りするための仕組みです。ブラウザでhttps://サイトURL/wp-json/wp/v2/にアクセスすると、その一覧を確認できます。

この仕組みはブロックエディタやモバイルアプリなど、WordPress自身の機能を支える重要な土台です。一方で、初期状態では未ログインの第三者でも一部の情報を読み取れるため、セキュリティ面で気になる方が多いのも事実です。

REST APIが有効だと外部から何が見えるのか

REST APIが有効な状態では、ログインしていない人でもhttps://サイトURL/wp-json/wp/v2/以下にアクセスするだけで、次のような情報を取得できる場合があります。

  • 公開済みの投稿一覧(本文・タイトル・公開日など)
  • ユーザーの一覧(表示名など)
  • アップロード済みファイル(メディア)のURL一覧

特に注意したいのが、ユーザーの一覧です。表示名からログインIDを推測される手がかりになり得るため、総当たり攻撃(ブルートフォース攻撃)の下調べに使われる可能性があります。こうした情報収集の入り口をふさげる点が、REST API無効化の主なメリットです。

ここが最も重要なポイントです。「REST APIを完全に止めてしまえば安全」と考えがちですが、WordPress公式は完全な無効化を推奨していません。

WordPress公式FAQ「Can I disable the REST API?」の回答(要旨)
REST APIを無効化すべきではありません。無効化すると、APIが動作していることに依存しているWordPress管理画面の機能が壊れてしまいます。ただし、APIの利用者に認証(ログイン)を求めるフィルターを使うことはできます。これにより、匿名の外部アクセスを実質的に防げます。

(出典: developer.wordpress.org REST API FAQ

つまりWordPress公式の推奨は、「完全に無効化する」のではなく「未ログインユーザーからのアクセスだけを制限する」という方法です。この記事で紹介する2つの方法も、いずれもこの公式の考え方に沿った安全な形(ログイン中のユーザーには影響を与えない形)で無効化します。

注意

ネット上でよく見かける「無条件で全員のREST APIをブロックするコード」は、ログイン中の管理画面機能まで巻き込んで停止させるおそれがあります。この記事で紹介する方法は、そうしたリスクを避けられる安全な書き方を採用しています。詳しい理由は後述の注意点セクションで解説します。

無効化(未ログイン制限)した方がいいケース・しない方がいいケース

REST APIの未ログイン制限は、すべてのサイトに必要なわけではありません。自分のサイトがどちらに当てはまるかを確認しましょう。

未ログイン制限をした方がいいケース
  • 外部サービスやアプリとREST APIで連携していない、一般的なブログ・企業サイト
  • ユーザー名の露出やコンテンツの外部取得をできるだけ減らしたい
  • 不正ログインの下調べに使われる情報を減らしたい
制限しない方がいい(慎重に判断すべき)ケース
  • REST APIを使う外部連携(他サービスへの自動投稿、ヘッドレスWordPress構成など)がある
  • お問い合わせフォームや予約など、未ログイン訪問者の操作にREST APIを使うプラグインを利用している
  • REST API経由でデータを取得する外部ツールを日常的に使っている

連携の有無に自信がない場合は、次のセクションの確認手順を必ず実施してから作業してください。

無効化する前に必ず確認する2つのこと

いきなり無効化して、サイトの機能が壊れたら怖いです…。先に確認できることはありますか?

いきなり無効化するとサイトの一部機能が止まる可能性があります。トラブルを避けるために、次の2つを事前に確認しておきましょう。

1. REST APIに依存しているプラグイン・機能がないか確認する

お使いのプラグインの中に、REST APIを使って動くものがないかを確認します。特に次のような機能を提供するプラグインは、未ログイン訪問者の操作でREST APIを使っていることがあります。

  • お問い合わせ・予約・アンケートフォーム
  • ECサイト(カート・決済まわり)
  • 外部サービスとの自動連携・データ同期
  • サイトを別システムで表示するヘッドレス構成

これらに心当たりがある場合は、無効化後に該当機能が正常に動くかを必ずテストしてください。判断が難しいときは、まず後述の「Disable WP REST API」プラグイン(ログイン中は通常動作する方式)から試すと安全です。

2. 現在のREST APIの動作状況を確認する

作業前に、今REST APIがどう応答するかを確認しておくと、無効化後との違いがはっきりわかります。ログアウトした状態のブラウザ(またはプライベートウィンドウ)で、次のURLにアクセスしてください。

https://あなたのサイトURL/wp-json/wp/v2/

JSON形式のデータがずらりと表示されれば、REST APIは有効な状態です。この画面が無効化後にどう変わるかを、後の動作確認で見比べます。

方法1:プラグイン「Disable WP REST API」で無効化する(コード不要・おすすめ)

コードを触らずに、管理画面から数クリックで安全に無効化したい!という方はこの方法がぴったりです。

コードを書かずに済ませたい方には、プラグイン「Disable WP REST API」の利用をおすすめします。

このプラグインの特徴は、未ログインユーザーのみREST APIへのアクセスを制限し、ログイン中のユーザーには通常どおり動作させる点です。そのため、管理画面のブロックエディタなど、ログイン中に使う機能を壊しにくいのが利点です。

1. プラグインをインストール・有効化する

WordPress管理画面の「プラグイン」→「新規プラグインを追加」から「Disable WP REST API」を検索してインストールし、「有効化」をクリックします。特別な設定画面はなく、有効化した瞬間から未ログインユーザーのREST APIアクセスが制限されます。

プラグイン一覧画面—「Disable WP REST API」の「停止」リンク(有効化済みの状態)
▲ 「Disable WP REST API」が有効化されている状態(「停止」リンクが表示される)

2. 無効化されたか動作確認する

正しく制限できているかを確認します。事前確認と同じく、ログアウトした状態のブラウザ(またはプライベートウィンドウ)でhttps://あなたのサイトURL/wp-json/wp/v2/にアクセスしてください。

制限が効いていれば、投稿データの代わりに次のようなエラーメッセージが表示されます。

表示されるエラーメッセージ(未ログイン時)
rest_login_required: REST API restricted to authenticated users.
(=REST APIは認証済みユーザーに制限されています)
ログアウト状態でwp-json/wp/v2/へアクセスした際のエラー表示
▲ 未ログイン状態でアクセスすると、このようなエラーが表示される

このメッセージが出れば成功です。ログイン中の管理画面(ブロックエディタなど)は、これまでどおり使えます。

この記事の手順は、WordPress 7.0 + Disable WP REST API v2.6.8で動作確認済みです(2026年7月時点)。

方法2:functions.phpにコードを追記して無効化する(開発者向け)

プラグインを増やしたくない、コードで管理したいという方向けの方法です。ここではWordPress公式FAQに掲載されている安全なコードを使います。

プラグインを増やしたくない場合は、テーマのfunctions.phpにコードを追記して未ログインアクセスを制限する方法もあります。ここで使うのは、WordPress公式FAQに掲載されている公式のコード例です。

ネット上には「無条件で全員をブロックするコード」も出回っていますが、それはログイン中の管理機能まで止めてしまうリスクがあります。次のコードは「ログインしていない場合だけエラーを返す」形になっており、公式が案内している安全な書き方です。

1. 子テーマのfunctions.phpにコードを追記する

注意

functions.phpの編集は、書き方を1文字でも間違えるとサイト全体が表示されなくなることがあります。必ず子テーマfunctions.phpを編集し、作業前にファイルのバックアップを取ってください。親テーマを直接編集すると、テーマ更新時に変更が消えます。

WordPress管理画面の「外観」→「テーマファイルエディター」から子テーマのfunctions.phpを開き(またはFTP等で直接編集し)、末尾に次のコードを追記します。

add_filter( 'rest_authentication_errors', function( $result ) {
    // 既に認証チェック済みの結果はそのまま返す
    if ( true === $result || is_wp_error( $result ) ) {
        return $result;
    }
    // ログインしていない場合はエラーを返す
    if ( ! is_user_logged_in() ) {
        return new WP_Error(
            'rest_not_logged_in',
            __( 'You are not currently logged in.' ),
            array( 'status' => 401 )
        );
    }
    return $result;
});
テーマファイルエディター画面—子テーマのfunctions.phpにコードを追記した状態
▲ 子テーマのfunctions.phpの末尾にコードを追記する

このコードはrest_authentication_errorsというフィルターを使っています。これはREST APIの認証結果を差し替えるための仕組みです。処理の流れは次のとおりです。

  • すでに認証結果が確定している場合は、それをそのまま返す
  • ログインしていない場合だけ、401エラー You are not currently logged in. を返す
  • ログイン中のユーザーには従来どおりREST APIを使わせる

この「ログイン中は通す」という条件があるため、方法1のプラグインと同様に、管理画面の機能を壊しにくくなっています。

2. 動作確認する

コードを保存したら、方法1と同じ手順で確認します。ログアウトした状態のブラウザでhttps://あなたのサイトURL/wp-json/wp/v2/にアクセスし、次のようなエラーが返れば成功です。

You are not currently logged in.(ステータスコード401)

その後、必ずログインした状態で管理画面(投稿の編集画面など)が正常に動くかも確認してください。もしサイトが真っ白になった場合は、追記したコードにミスがあります。FTPなどでfunctions.phpから該当コードを削除すれば元に戻せます。

無効化すると影響が出る可能性がある機能(注意点)

無効化したせいで、普段使っている機能が動かなくなったら困ります…。何に影響するんですか?

REST APIはWordPressの多くの機能を支えています。とくに「無条件で全員をブロックするコード」を使ってしまうと、次のような機能が軒並み止まるおそれがあります。

  • ブロックエディタ(Gutenberg):REST APIは「ブロックエディタや最新のプラグインインターフェースを実現する」ための仕組みだと公式に明記されています。無効化すると投稿編集画面が正しく動かなくなる場合があります。
  • アプリケーションパスワード:認証フローの中で、REST APIのルートURLへのリクエストが使われています(make.wordpress.org)。
  • WordPressモバイルアプリ:REST APIを使ってモバイルアプリなどのクライアントを構築できると公式に明記されています。無効化するとアプリからの操作に影響が出ることがあります。
MEMO

この記事で紹介した方法1(プラグイン)と方法2(公式コード)は、いずれも「ログイン中のユーザーには影響しない」方式です。そのため、ログインした状態で使う管理画面のブロックエディタ操作などへの影響は限定的です。
一方で、ログインチェックのない「無条件ブロック型」のコードを使うと、上記の機能まで止まる可能性があります。安全のため、必ず本記事の方式(未ログインのみ制限)を採用してください。

なお、方法1・方法2のいずれを使った場合でも、未ログイン訪問者がREST APIを使う機能(一部のフォームやEC機能など)は影響を受ける可能性があります。無効化後は主要な機能をひととおりテストしておくと安心です。

よくある質問

WordPressのREST APIを無効化するには?

大きく2通りの方法があります。コードを書かずに済ませたい方はプラグイン「Disable WP REST API」を使う方法1が手軽でおすすめです。プラグインを増やしたくない開発者の方は、子テーマのfunctions.phpに公式コードを追記する方法2があります。どちらもログイン中のユーザーには影響を与えず、未ログインアクセスだけを制限する安全な方式です。

REST APIを無効化するとどうなる?

未ログインの第三者が/wp-json/wp/v2/から投稿一覧やユーザー名などを取得できなくなり、情報収集や不正ログインの下調べを防ぎやすくなります。一方で、REST APIに依存する機能(ブロックエディタ、モバイルアプリ、一部の連携プラグインなど)に影響が出る可能性があります。詳しくは無効化すると影響が出る可能性がある機能を確認してください。

WordPress REST APIとは何ですか?

WordPressに保存された投稿・ページ・ユーザーといったデータを、JSON形式で外部とやり取りするための仕組みです。この仕組みのおかげで、ブロックエディタやモバイルアプリ、外部サービスとの連携などが実現できています。ブラウザで/wp-json/wp/v2/にアクセスすると、その一部を確認できます。

WordPress REST APIに脆弱性はありますか?

過去にありました。2017年2月、WordPress 4.7.0・4.7.1のREST APIエンドポイントに「未認証の権限昇格の脆弱性」が見つかり、投稿の改ざんにつながる問題として報告されました(Sucuri社のMarc-Alexandre Montpas氏が報告)。この問題はWordPress 4.7.2で修正済みです。

2026年7月時点で、これ以外のREST API関連の脆弱性について公式な報告はありません。WordPress本体を最新に保つことが基本的な対策になります。

REST APIを無効化するとSEOに影響しますか?

一般的な理解として、REST APIの有効・無効はGoogleの検索順位評価に直接関わる仕組みではありません。Googleのクローラーは通常のページ(HTML)を読み取ってインデックスするため、未ログイン向けREST APIを制限しても、通常の記事表示やインデックスには影響しないと考えられます。心配な場合は、無効化後に主要ページが問題なく表示されるかを確認しておくとよいでしょう。

スマホ用WordPressアプリを使っている場合はどうすればいい?

WordPressのモバイルアプリはREST APIを利用して動く可能性があります。ただし本記事の方法(未ログインのみ制限)であれば、アプリにログインした状態での操作は通常どおり動くケースが多いです。とはいえ環境によって挙動は変わるため、無効化した後にアプリでログインし、投稿の閲覧・編集などが問題なくできるかを必ず確認してください。

WordPressのセキュリティをさらに強化するにはどうすればいいですか?

REST APIの制限は対策の一部にすぎません。まずは管理画面のログインURLを変更したり、ログイン試行を制限したりして、不正ログインの入り口を固めるのが効果的です。

具体的な手順は管理画面のログインURLを変更する方法(SiteGuard WP Plugin)で解説しています。

あわせて、無効化による影響を理解したうえで、サーバー側の防御(WAFなど)も組み合わせると、より多層的に守れます。

💡 サーバー側の不正アクセス対策も合わせて実施しよう
REST APIを無効化しても、プラグインの脆弱性や不正ログインの試行など他の攻撃経路は残ります。ラッコサーバーは全プランでWAF(Webアプリケーションファイアウォール)の適用・ログイン試行回数の制限・ログ監視を標準で行っており、サイト全体のセキュリティを多層的に強化できます。
→ 月額330円〜、10日間無料お試し可能。

まとめ

WordPressのREST APIは便利な仕組みである一方、初期状態では未ログインの第三者に投稿一覧やユーザー名などを見られてしまいます。この記事のポイントを整理します。

  • WordPress公式は完全な無効化を非推奨としており、「未ログインユーザーのアクセスだけを制限する」方法が推奨されている
  • コード不要ならプラグイン「Disable WP REST API」方法1)が手軽で安全
  • 開発者は公式FAQのコードfunctions.phpに追記する(方法2
  • 無効化前に、REST APIに依存する機能がないかを確認し、作業後は主要機能をテストする

自分のサイトの用途に合わせて、まずは影響の少ない未ログイン制限から取り入れてみてください。REST APIの制限とあわせて、ログインURLの変更やサーバー側の防御も組み合わせると、より安心してサイトを運営できます。