ワードプレスは、ユーザー名がバレてもパスワードがあるからOK的なスタンスをとっています。
しかしこれだと、パスワードが割れただけで突破されてしまいます。
ユーザー名が公開されている状態は、セキュリティ上決して好ましいものではありません。
functions.phpとは、ワードプレスの様々な機能を制御するためのファイルです。
今回はセキュリティ強化のため、functions.phpに記述しておきたいおすすめの記述を紹介します。
何も考えずコピペをするだけでセキュリティを強化できるので、是非ご活用ください。
サンプルコードの使い方
コード右上のアイコンをクリックすることでコピーできます。

それでは本文へ、レッツゴー!
functions.phpの書き方
functions.phpは基本的に、ひたすらPHPの記述をしていきます。
なので、このようにしておきましょう。
<?php
2行目から、必要に応じた記述をしていきます。
また、閉じタグ(?>)は不要です。
最初から最後までひたすらPHPの場合、閉じタグは記載しなくてOKなのです。
記載してもいいのですが、記載しないことが推奨されています。
ものすごく簡単にいうとくだらないエラーを回避するためです。
それでは、セキュリティを強化するためのおすすめの記述に移りましょう!
① functions.phpへの不正アクセスを回避する
if (!defined('ABSPATH')) exit;
外部からfunctions.phpへの不正アクセスを回避するための記述です。
ほぼ全てのプラグインに記載されています。
functions.phpも例外なく、記載しておきましょう。
② URL/?author=1でのユーザー名バレ回避
さて、ここでは実際に試してみますよ!
自身のワードプレスサイトURLの後ろに「/?author=1」をコピペしてジャンプしてみましょう!

すると…

わぁ!!!
見事にIDが1のユーザー名が表示されました!
さて、これを今から回避していきますよ!
function my_template_redirect() {
if (is_author() ) {
wp_redirect( home_url());
exit;
}
}
add_action( 'template_redirect', 'my_template_redirect' );
これでもう一度「/?author=1」をお試しください。
ユーザー名が表示されることなく、ホームにリダイレクトされるようになりました!
③ URL/wp-json/wp/v2/usersでのユーザー名バレ回避
先ほどと同様、URLの末尾に「wp-json/wp/v2/users」とコピペしてジャンプしてみましょう!

さて、謎の文字列が大量に出てきましたね!
よーーーく見てください…
よーーーく見るのがめんどくさい方は「name」で検索してください。
むむむ!
ワードプレスの全てのユーザー名が表示されていますね!
これも回避しておきましょう
function my_filter_rest_endpoints( $endpoints ) {
if ( isset( $endpoints['/wp/v2/users'] ) ) {
unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/v2/users/(?P[\d]+)'] ) ) {
unset( $endpoints['/wp/v2/users/(?P[\d]+)'] );
}
return $endpoints;
}
add_filter( 'rest_endpoints', 'my_filter_rest_endpoints', 10, 1 );
改めて「wp-json/wp/v2/users」をコピペしてジャンプしてみましょう。
謎の文字列が出てきますが、無事にユーザー名は表示されなくなりました。
functions.phpにコピペしておくべきおすすめの記述
以上3つがコピペで手軽にセキュリティを強化する記述でした!
/*--------------------------------
① functions.phpへの不正アクセスを回避する
---------------------------------*/
if (!defined('ABSPATH')) exit;
/*--------------------------------
② URL/?author=1でのユーザー名バレ回避
---------------------------------*/
function my_template_redirect() {
if (is_author() ) {
wp_redirect( home_url());
exit;
}
}
add_action( 'template_redirect', 'my_template_redirect' );
/*--------------------------------
③ URL/wp-json/wp/v2/usersでのユーザー名バレ回避
---------------------------------*/
function my_filter_rest_endpoints( $endpoints ) {
if ( isset( $endpoints['/wp/v2/users'] ) ) {
unset( $endpoints['/wp/v2/users'] );
}
if ( isset( $endpoints['/wp/v2/users/(?P[\d]+)'] ) ) {
unset( $endpoints['/wp/v2/users/(?P[\d]+)'] );
}
return $endpoints;
}
add_filter( 'rest_endpoints', 'my_filter_rest_endpoints', 10, 1 );
ちょっとした注意
ワードプレスの基本的なスタンスは「パスワードがあるからユーザー名はバレてもOK」です。
ユーザー名はオープンなのがデフォルトなのです。
よそのワードプレスサイトで勝手に試して、ユーザー名が分かったからって
「なんだこのサイトセキュリティガバガバだな〜」
なんて思わないようにしましょう!
ユーザー名を公開するか非公開するかについては、個人によりけりです。
これだけではなく、BASIC認証を使ってログイン画面へのアクセスを回避したり、パスを変更してログインURLを変更したりなど、セキュリティを強化する方法は他にもあります。
ただただ、ユーザー名なんて公開する必要がなければ、しないに越したことはないよね。
という話なのでございます。
今日もあなたが夢に向かって一歩前進できていますように。
お疲れ様でした。