WordPress ユーザー一覧の表示と対策

WordPressのユーザーは簡単に調べられます。

WordPressユーザーの一覧を見る方法

WPのURL/?author=1

アクセスすると、/archives/author/ユーザ名にリダイレクトされ、ユーザー名がすぐにわかります。

WP REST APIはデフォルトで有効になっているので、以下の方法でも確認できます。

WPのURL/wp-json/wp/v2/users

ユーザー一覧の表示対策

WordPressでユーザ名がわかってしまうのはセキュリティの観点からも良しとされていないです。(この辺の理由は他のサイトで述べられています)

これを対策するプラグインとして有名なのは

ですね。それ以外にもWordPressのセキュリティ関連のプラグインを入れていればユーザー一覧対策はされている場合もあり。


All In One WP Security には
/?author = 1でユーザー情報を取得するのを防止する対策があります。

Miscellaneous > Users Enumeration

Disable Users Enumeration にチェックをいれます。

プラグインに頼らないでやりたい場合は、
functions.php
.htaccess
に設定する方法があります。

functions.phpに記述する

if (!is_admin()) {
// default URL format
if (preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])) die();
add_filter('redirect_canonical', 'shapeSpace_check_enum', 10, 2);
}
function shapeSpace_check_enum($redirect, $request) {
// permalink URL format
if (preg_match('/\?author=([0-9]*)(\/*)/i', $request)) die();
else return $redirect;
}

/?author=1等のアクセスをdie()で終了させています

.htaccessに記述する方法

<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* http://example.com/? [L,R=302]
</IfModule>

こちらは/?author=1のアクセスをexample.comへリダイレクトする方法です。

http://example.comの部分は適宜変更します。

参考にさせていただいたサイト:

WordPress Username Enumeration Techniques and How to Fix Them

【バレてOK!】WordPressのユーザー名は99%変更不要