
WordPress(ワードプレス)は下記 URL にアクセスすることで、ユーザー名などの管理データを取得できます。
サイト URL +?author=数字:ユーザー名を取得
サイト URL +/wp-json/wp/v2/users:ユーザー名を含む公開情報を取得
「サイト URL +?author=数字」からのアクセスについては、セキュリティ対策プラグイン「SiteGuard WP Plugin」の機能を使うことで簡単にブロックできますが、問題は「サイト URL +/wp-json/wp/v2/users」からのアクセスです。
「SiteGuard WP Plugin」の機能でブロックすることもできますが、その場合は「REST API 」を無効化することになり、強力なセキュリティ効果を得られる一方で、WordPress(ワードプレス)全体が不安定になり動作不良を引き起こす原因になってしまうという問題があるため、基本的には「REST API」を無効化することは推奨されていません。
では、この問題をどうやって解決するのか?
今回の記事では、その方法について解説していきます。
プラグインの導入方法や機能について、また、WordPress(ワードプレス)のセキュリティに関する基礎知識については別の記事で解説を行っています。
「SiteGuard WP Plugin」の詳細や設定については↓コチラの記事をご確認ください。
WordPress(ワードプレス)のセキュリティに関する基礎知識については↓コチラの記事をご確認ください。
REST API を無効化せずにユーザー名の取得を防ぐ方法
最もシンプルで安全な方法として「functions.php」にコードを追加する方法を紹介します。
コードを追加する手順を解説しますので、ぜひ試してみて下さい。

管理画面左側のメニューにある「外観」から「テーマファイルエディター」をクリックします。

テーマファイルの編集ページに入りますので、右側のテーマファイル一覧から「functions.php」を編集できるファイルを選択します。
ファイルが「functions.php」であることを確認したら、コード入力欄に以下のコードを追加してください。
クリックでコードを表示する
// REST API からユーザー一覧が取得されるのを防止
add_filter( 'rest_endpoints', function( $endpoints ) {
// 未ログインユーザー向けに /wp/v2/users を削除
if ( ! is_user_logged_in() ) {
unset( $endpoints['/wp/v2/users'] );
unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
}
return $endpoints;
});

コードを追加したら、一番下にある「ファイルを更新」をクリックして保存します。
これで、コードを追加できました。
追加したコードが正常に機能しているか確認する
ログインしている場合は一度ログアウトして「自分のサイトの URL +/wp-json/wp/v2/users」へアクセスしてください。
ユーザー名が表示されず「404」を返していれば、追加コードは正常に機能しています。
例)下記のような記述が表示されていれば OK
{“code”:”rest_no_route”,”message”:”URL ,~記述が長いので省略~”data”:{“status”:404}}
まとめ
今回は「REST API」を無効化せずにユーザー名の取得を防ぐ方法について紹介しました。
プラグインの設定から「REST API」を無効化することで高いセキュリティ効果を期待できますが、それは同時にトラブルの原因にもなりますので、今回紹介した方法を使って対策してくことをおすすめします。
ただし、この方法で対策したからといって、セキュリティ面で万全になるわけではありません。
基本的なパスワードの強化や、プラグインでの対策、レンタルサーバーの機能を使った対策なども含めて、さまざまな角度からセキュリティ対策を行っていきましょう!



