WordPressはセキュリティホールが多くて、ハッキングされやすいCMSとして有名です。
決してそんなことは無いのですが、実際問題、毎日どこかのサイトがハッキングされている事実があります。
WordPressのセキュリティを高めるために、やっておいた方が良いことの一つとして、ユーザーIDを隠すというものがあります。
WordPressのログインユーザーIDが「そのまま公開」されている状態では、攻撃の対象となることがあります。
こんな文言をよく見かけるのですが、なんで攻撃の対象になるのかよく割らない人も多いと思います。
よくわからないけど、そういう人がいるからユーザーIDは隠した方がよいのだ、と覚えている人もいるかもしれません。
私も、ユーザーIDだけ隠してもあまり意味が無いのでは?と思った人です。
でも、実際にユーザーIDが漏れてしまうと簡単にハッキングされる事例があったので、メモしておきたいと思います。
ユーザーIDがバレたら簡単にハッキングされた事例
もし、ユーザーIDがわかったら簡単にサイトにログインできる事例
- パスワードが簡単だった
- パスワードがユーザーID+簡単な文字列
- 海外から管理画面のアクセス禁止していない
- パスワード不一致を繰り返しても、ロックしない
パスワードが簡単もしくはユーザーIDとの組み合わせ
パスワードが簡単な場合は、総当たり攻撃で簡単にパスワードが破られます。
どれぐらい簡単かというと、testとか、demoとかそんな簡単な単語です。
ユーザー名と簡単なパスワードの組み合わせというのも好まれています。
admintestとかadmindemoとかです。
ユーザーIDがわかっていれば、これも簡単に破られてしまいます。
パスワード総当たり攻撃に対して防御していない
ハッキングされるのは多くの場合、海外からのアクセスです。
VPNで日本のIPを偽装されると効果が低いのですが、最低限、海外からの管理画面のアクセスは禁止しておきましょう。
さらに、パスワードが簡単だと、パスワード総当たりされると簡単にログインされてしまいます。何度もパスワード入力で不一致となったらログインロックする仕組みが必要です。
ログインロックする仕組みがあれば、総当たりされてもパスワードを探せなくなるので、ハッカーはリソースが無駄になるので他のサイトにいなくなります。
ここまでの結論
ベストプラクティスは、パスワードを複雑にして、ログインを何度か失敗したらログイン画面をロックすればいいことになります。
パスワードを複雑にしたくないし、ログイン画面をロックするのも面倒だ、という場合は、ユーザーIDを隠すことで、ユーザーIDとパスワードの2つを推測しなければならないのでハッカーの手間が増えて良さそうです。
ユーザーIDを隠すことは可能なのか?
可能です。
ユーザーIDを隠すプラグインは探せば有名なものがあります。
でも、本当に隠せているのか?はよく調べた方がよいです。
↓こちらの記事を見ると、ユーザーIDを調べる方法がいくつも出ていて、これらすべてを対策しないと中途半端になってしまいます。

- ① the_author()等で投稿者名を取得した際にユーザー名が使用される
- ② ユーザーページが追加される
- ③ REST API にユーザー一覧の取得機能が追加される
- ④ サイトマップが作成されるようになる
①~③はXO securityで対応できます。
④は、XO secrurityでは対応できません。
WordPress 5.5から導入されたXML sitemap機能を使わずにXML sitemapのプラグインを導入する方がよいでしょう。
add_filter('wp_sitemaps_enabled', '__return_false');
まとめ
パスワードが簡単な場合は、ユーザーIDを隠した方が良いです。
そして、そのためのプラグインとしておすすめなのがXO securityです。
XO securityは、多機能なのに初心者向けの解説が少ないので、なんでこの機能あるの?というのが結構あります。
こちらの記事がわかりやすいです。
