WP REST API のアクセス制御方法をわかりやすく解説

WP REST API のアクセス制御をテーマにしたセキュリティイメージ(鍵とAPI構造の図)
WP REST API のアクセス制御方法を視覚的に表現したアイキャッチ画像

WordPress には、投稿データやユーザー情報などへプログラムからアクセスできる WP REST API が標準搭載されています。便利な機能ですが、適切に制御しないまま公開すると、意図せずサイト情報が外部に漏れてしまう可能性があります。本記事では、REST API の基本と、安全に運用するためのアクセス制御方法を整理します。

関連:

WP REST API とは?

WP REST API は、外部アプリケーションやテーマ・プラグインが WordPress のデータへアクセスするための仕組みです。以下のような用途で利用されます。

  • 投稿一覧の取得
  • カスタム投稿の読み込み
  • プラグインやテーマによるデータ連携
  • SPA(シングルページアプリケーション)との接続

便利な機能ですが、誰でもアクセス可能なエンドポイントも存在するため、必要に応じて制御することが重要です。

REST API を制御するべき理由

REST API には一部の情報が公開状態になっている場合があります。例として、
/wp-json/wp/v2/users はログインしていない状態でもユーザー情報を取得できる可能性があります(環境によって異なります)。

適切に制御することで以下のようなリスク軽減が期待できます。

  • 不正アクセス対策
  • ユーザー情報の露出防止
  • サイト構造の推測防止
  • 余計な外部リクエストの削減

アクセス制御の主な方法

1. 未認証ユーザーの REST API アクセスを制限する

もっとも一般的な対策は、ログインしていないユーザーの REST API へのアクセスを制限する方法です。functions.php にフィルターフックを追加することで対処できます。

// 未認証ユーザーが REST API にアクセスした場合に制限
add_filter( 'rest_authentication_errors', function( $result ) {
    if ( ! empty( $result ) ) {
        return $result;
    }

    if ( ! is_user_logged_in() ) {
        return new WP_Error(
            'rest_cannot_access',
            'REST API の利用にはログインが必要です。',
            array( 'status' => 401 )
        );
    }

    return $result;
});

このコードは ログインしていないアクセス全体をブロックする場合 に向いています。

関連:

2. 特定のエンドポイントだけ制限する

サイト全体を制限したくない場合、特定のエンドポイントだけ許可・拒否することも可能です。

add_filter( 'rest_endpoints', function( $endpoints ) {

    // 例:ユーザー情報エンドポイントを無効化
    if ( isset( $endpoints['/wp/v2/users'] ) ) {
        unset( $endpoints['/wp/v2/users'] );
    }

    return $endpoints;
});

ユーザー情報の露出を防ぐ際に効果があります。

3. セキュリティプラグインを利用する方法

プログラム編集が難しい場合は、セキュリティプラグインで自動制御する方法もあります。

例:All-In-One Security(AIOS)

  • 未認証の REST API アクセスをブロックする機能
  • ロール(権限)ごとにアクセス許可が可能
  • ホワイトリスト形式のルール設定にも対応

プラグインを利用することで、管理画面から直感的に設定できます。

関連:

4. Basic 認証や OAuth を使った運用

外部システムと連携したい場合は、WordPress REST API の認証方法を採用することで、安全な連携が可能になります。

主な認証方式:

  • Basic 認証(簡易 / SSL 推奨)
  • OAuth 認証
  • JWT 認証(API 連携でよく利用)

必要な機能に応じて認証方法を選択すると安全な接続が実現します。

実際の運用で意識したいポイント

REST API のアクセス制御では、以下の観点が重要です。

  • 必要なエンドポイントのみ公開する
  • 使わない API エンドポイントは閉じる
  • 外部サービスとの連携は認証付きで行う
  • セキュリティプラグインによる一元管理も有効
  • functions.php を編集する際はバックアップを取る

REST API の制御は、サイト規模に関係なく重要なセキュリティ対策の一つです。

まとめ

WP REST API は便利な反面、適切な制御をしなければ情報が公開状態になる場合があります。
未認証ユーザーのアクセス制限不要エンドポイントの削除プラグイン活用 などを組み合わせることで、安全な WordPress 運用が実現します。

WordPress の権限管理やセキュリティ設定と合わせて見直すことで、より強固なサイト環境を構築できます。

関連: