WordPressのREST APIは、テーマやプラグインの開発で便利ですが、使用しない場合はセキュリティの観点から無効化を検討することが推奨されます。
特に、サイトの情報が不正に取得されるリスクを軽減したい場合には、REST APIの無効化が有効です。
目次
解説
REST APIはWordPressのJSONベースのエンドポイントで、ユーザー情報や投稿データなどが取得可能です。必要のない場合や、外部からの不正なアクセスを防ぐため、REST APIを無効化する方法があります。
ただし、完全に無効化してしまうと一部のプラグイン(例:GutenbergエディタやWooCommerce)に影響が出る可能性があるため、慎重な判断が必要です。
REST APIを無効化するコード
// REST APIを無効化
function disable_rest_api_for_non_logged_in_users($result) {
if (!is_user_logged_in()) {
return new WP_Error(
'rest_disabled',
__('REST APIは無効化されています。', 'text-domain'),
array('status' => 403)
);
}
return $result;
}
add_filter('rest_authentication_errors', 'disable_rest_api_for_non_logged_in_users');
rest_authentication_errors
フィルターフックを使用して、REST APIにアクセスがあった際の認証をカスタマイズしています。is_user_logged_in()
関数で、ログインしていないユーザーの場合に、REST APIへのアクセスを禁止します。- アクセスが禁止された場合、403エラーとともに「REST APIは無効化されています」というメッセージを返します。
難易度
基本的なPHPの知識があれば、REST APIの無効化は簡単に行えます。ただし、REST APIを無効化すると、一部のプラグインが動作しなくなる場合があるため、テストが必要です。
ポイント
- ユーザーがログインしていない場合のみREST APIを無効化しているため、管理者や編集者が必要なAPIにアクセスすることは可能です。
- セキュリティ強化として、不要なエンドポイントへのアクセスを防ぎます。
Q&A
まとめ
REST APIの無効化は、WordPressサイトのセキュリティを強化するための有効な手段です。
ただし、すべてのREST APIを無効化すると、一部のプラグインやテーマに影響を与えるため、非ログインユーザーのみ無効化するなどの柔軟な対応が推奨されます。
コメント