「想いを伝えたい」
そんなコンセプトの
ホームページ制作会社です

無償相談サイト診断受付中
スタッフブログ

これだけはやっておきたい!WordPressのセキュリティ対策」

公開日:
社長 中川理

前回のおさらい:「?author=1」でユーザー名が漏洩するリスク

WordPressには、適切な対策をしていないと簡単にユーザー名(スラッグ)が取得されてしまう脆弱性があります。
前回の記事「?author=1」でユーザーIDが特定される?では、「?author=1」 を使うことで管理者のスラッグが取得され、それがログインIDと同じ場合、不正ログインのリスクが高まる問題について解説しました。

しかし、実はこの問題だけではありません。「/wp-json/wp/v2/users」 というURLを使うと、ユーザーID(数値)やユーザー名(スラッグ)が取得できてしまうのです。

ご自分のウェブサイトを今すぐチェックしてみてください!

REST API経由でユーザー名が漏洩!?

REST APIとは?

WordPressには、開発者向けの機能として REST API という仕組みが備わっています。
これは、外部のシステムやアプリと連携するための機能で、例えば次のようなことができます。

  • 記事の取得・編集(スマホアプリなどから記事を投稿)
  • ユーザー情報の取得(プロフィール情報の表示など)
  • 外部ツールとの連携(プラグインやカスタム機能の開発)

この機能はとても便利ですが、 適切な制限をしていないと、誰でも簡単にサイトのユーザー情報を取得できてしまう というリスクがあります。

実際に試してみよう:「/wp-json/wp/v2/users」の危険性

あなたのWordPressサイトがこの問題の影響を受けているか、簡単に確認する方法があります。

🔍 チェック方法

ブラウザのアドレスバーに、以下のURLを入力してください。

https://ドメイン/wp-json/wp/v2/users

このURLを開いたとき、サイトに登録されているユーザー情報(ユーザー名・IDなど)が一覧表示されてしまう場合は要注意です。

攻撃者がこの情報を悪用すると、不正ログインのリスクが格段に高まります!

なぜ「/wp-json/wp/v2/users」からの情報漏洩が危険なのか?

「/wp-json/wp/v2/users」にアクセスすると、 ユーザーID(数字)・ユーザー名・表示名 などが誰でも取得できる状態になっていることがあります。

この情報が外部に知られてしまうと、 ログインIDを推測されるリスク があります。特にユーザー名がそのままログインIDとして使われている場合、不正ログインの標的になりやすくなります。

「?author=1」と「/wp-json/wp/v2/users」の違いとは?

攻撃手法取得できる情報危険度
?author=1ユーザー名(スラッグ)
/wp-json/wp/v2/usersユーザーID(数字)、ユーザー名、表示名

「?author=1」ではユーザー名(スラッグ)のみ取得できますが、 「/wp-json/wp/v2/users」ではより多くの情報が取得できてしまう ため、より危険度が高いとされています。

実際に起こりうる被害

ログインIDが分かれば、あとはパスワードを突破するだけで不正ログインが成立してしまいます。

攻撃者は以下の手口で狙ってきます!

ブルートフォースアタック(総当たり攻撃)
→ ユーザー名が分かっていれば、パスワードを試行し続けるだけでログイン突破

辞書攻撃(よく使われるパスワードのリストを試す)
→ 「password123」「admin」「qwerty」など、よく使われるパスワードを自動試行

フィッシング攻撃
→ 偽のセキュリティ警告メールでパスワードを盗む

だからこそ、今すぐ対策が必要!

「ログインIDがバレると、サイトが乗っ取られるリスクが上がる」

この事実をしっかり認識し、次のステップで適切な対策を実施しましょう!

「/wp-json/wp/v2/users」のユーザー名漏洩を防ぐ方法

では、具体的にどうすればWordPress REST API経由の情報漏洩を防げるのでしょうか?
簡単にできる対策をいくつか紹介します。

方法1:functions.phpでREST APIのユーザー情報を非公開にする

WordPressのfunctions.phpに以下のコードを追加することで、ログインしていないユーザーが「/wp-json/wp/v2/users」にアクセスするのを防ぎます。

function restrict_rest_users_endpoint($result, $server, $request) {
    if (strpos($request->get_route(), '/wp/v2/users') !== false) {
        if (!is_user_logged_in()) {
            return new WP_Error('rest_forbidden', __('REST API access is restricted.'), array('status' => 403));
        }
    }
    return $result;
}
add_filter('rest_pre_dispatch', 'restrict_rest_users_endpoint', 10, 3);

方法2:セキュリティプラグインを活用する

プラグインを利用することで、より簡単にREST APIの制限ができます。

おすすめのプラグイン

  • 「All In One WP Security & Firewall」:不正アクセス対策全般を強化
  • 「XO Security」(弊社おすすめ!)
    日本製のセキュリティプラグインで、不要なREST APIの無効化、ログイン保護、コメントスパム対策などができる
    軽量&シンプルな設定画面なので、初心者でも使いやすい
    「/wp-json/wp/v2/users」へのアクセス制限も可能!

これらのプラグインを導入し、REST APIの設定を適切に制限しましょう。

方法3:.htaccessでREST APIのアクセスを制限

.htaccessに以下のコードを追加することで、REST APIへのアクセスを制限できます。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/wp-json/wp/v2/users [NC]
    RewriteRule .* - [R=403,L]
</IfModule>

この設定を行うことで、「/wp-json/wp/v2/users」へのアクセスを禁止できます。

本記事で紹介した対策は、一般的なWordPress環境向けのものですが、すべてのサイトに適用できることを保証するものではありません。

テーマやプラグインの構成によっては影響が出る可能性があるため、必ずバックアップを取った上で自己責任で実施してください。

まとめ:「/wp-json/wp/v2/users」の対策を今すぐ実施しよう!

  • WordPress REST APIの設定が適切でないと、ユーザー名が簡単に漏洩する可能性がある
  • ユーザー名が漏れると、ブルートフォース攻撃の標的になり、不正ログインのリスクが高まる
  • functions.phpの修正、プラグインの導入、.htaccessの設定などで対策を行うことが重要

「自分のサイトは大丈夫」と思っている方こそ、今すぐチェックし、適切な対策を実施してください!

「対策をしたいけれど、どうすればいいか分からない」
「他社で作ったサイトでも対応できる?」

という方も、お気軽にご相談ください。可能な範囲でセキュリティ対策を実施いたします。
大切なサイトを守るために、今すぐ対策を見直しましょう!

ウェブデザイナー兼コーダー 社長 中川理

ナカガワウエブ制作所の代表取締役の中川です。
普段は主にサイトデザインからコーディング作業を担当しております。
カメラマンもしたり、ドローンを飛ばしたりとマルチに活躍しております。
何でもお気軽に私にご相談ください。