【セキュリティ対策】WordPressでユーザー名を他者に特定されないようにする方法
今回は、「WordPressでユーザー名を他者に特定されないようにする方法」について紹介します。
W3Techsによると、WordPressは全世界のWEBサイトの43.1%のシェアを誇っています。
世界のWEBサイトの半数近くはWordPressを使っているので、外部からの攻撃の標的にされやすいです。
特にユーザー名は対策をしていないと、簡単に第三者に漏れてしまいます。
セキュリティ対策を強化するために、今回の記事を参考にして頂ければと思います。
目次
WordPressでユーザー名を特定する方法と対策
WordPressでユーザー名を特定する方法は主に2つあります。
ユーザー名を特定されないようにする対策についても紹介するので、是非導入してみてください。
「/?author=1」をURLの最後につける
WEBサイトのトップページのURLの最後に「/?author=1」の文字列を追加してエンターキーを押してみてください。
対策していないWEBサイトだと、「/author/」の後ろにログイン時に必要なユーザー名が簡単に表示されてしまいます。
ユーザー名を特定されないようにするには、以下のコードをfunctions.phpに追加しましょう。
function disable_author_archive_query() { if( preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING']) ){ wp_redirect( home_url() ); exit; } } add_action('init', 'disable_author_archive_query');
これでホームURLを返すようになったので、ユーザー名が表示されなくなります。
「/wp-json/wp/v2/users」をURLの最後につける
WEBサイトのトップページのURLの最後に「/wp-json/wp/v2/users」の文字列を追加してエンターキーを押してみてください。
すると長い文字列が表示され、nameやauthorの値にユーザー名が表示されてしまいます。
これはWordPress4.7の以降に標準搭載されたREST APIという機能が原因で起きてしまう現象です。
対策としては、以下のコードをfunctions.phpに追加しましょう。
function my_filter_rest_endpoints( $endpoints ) { if ( isset( $endpoints['/wp/v2/users'] ) ) { unset( $endpoints['/wp/v2/users'] ); } if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) { unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ); } return $endpoints; } add_filter( 'rest_endpoints', 'my_filter_rest_endpoints', 10, 1 );
そうすることで、「/wp-json/wp/v2/users」を追加してログインしても、ユーザー名が表示されなくなります。
まとめ
以上が、「WordPressでユーザー名を他者に特定されないようにする方法」でした。
簡単に出来るセキュリティ対策なので、是非実践してみましょう!