WordPress のセキュリティ対策で、これだけはやっておいた方がいいぞ!と思うこと

この記事は、WP ZoomUP Advent Calendar 2021 の1日目の記事です。

まずはじめに

WordPress を使っていくうえで、これはもう常識というか当たり前にやっておかないといけないことが2つあります。

  • 最新バージョンを使用する。
  • ログインIDとパスワードを見破られないようにする。

もう、いろんなところで触れられているし今更説明の必要もないかなという感じではありますが、仕事でいろんなサイトを見ていると、いまだにこれができていないサイトがたくさんあって、なんだか残念な気持ちになります。

1つ目の方は、プラグインやテーマの仕様、サーバーのPHPのバージョンの関係で最新バージョンにアップデートできないこともあるので、その場合は仕方がないとしても2つ目の方は、しっかりと対応しておきたいものです。

WordPress をインストールしたら、これだけはやっておこう。

WordPress のログインIDは、簡単に見えてしまう。

WordPress のログインIDは、デフォルトのままだと丸見えなんです。

どういうことかというと、これは使用しているテーマにもよりますが、ほとんどのテーマで投稿記事のタイトルの下や記事の下などに投稿者名が表示されます。デフォルトのままだと、投稿者名はログインIDがそのまま表示されます。

デフォルトのままだとログインIDがそのまま表示されます。

これを変更するには、管理画面の「ユーザー」>「プロフィール」を開いて、「ニックネーム」を設定し「ブログ上の表示名」を変更します。

デフォルトの状態

ニックネームの欄に入力すると、ブログの表示名で選択できるようになります。

今回は、「管理者」を選択してから画面下の「プロフィールを更新」ボタンをクリックして保存します。

変更後は「ブログ上の表示名」が表示されます。

これだけでは安心できない

「ブログ上の表示名」が変更できてもこれで一安心というわけにはいきません。

試しにあなたの WordPress のサイトで、トップページのURLの後ろに /?author=1 を付けてアクセスしてみてください。
デフォルトのままの状態では、URLが/author/ログインID/ に切り替わっって投稿者アーカイブページが開きます。

表示名を変更してもURLには、ログインIDがそのまま表示されます。

プラグイン等で投稿者アーカイブを表示しないように対策されている場合は、トップページにリダイレクトされたり「Accessing author info via link is forbidden」のような表示が出て、投稿者アーカイブが見えなくなっていたりしますが、複数でサイトを運営していたりして投稿者アーカイブが必要な場合もあります。

アーカイブページが見えなければ安全というわけではない。

今度は、トップページのURLの後ろに /wp-json/wp/v2/users を付けてアクセスしてみてください。

[{"id":1,"name":"\u7ba1\u7406\u8005","url":"http:\/\/test.local","description":"","link":"http:\/\/test.local\/author\/test\/","slug":"test","avatar_urls":{"24":"http:\/\/0.gravatar.com\/avatar\/c2b06ae950033b392998ada50767b50e?s=24&d=mm&r=g","48":"http:\/\/0.gravatar.com\/avatar\/c2b06ae950033b392998ada50767b50e?s=48&d=mm&r=g","96":"http:\/\/0.gravatar.com\/avatar\/c2b06ae950033b392998ada50767b50e?s=96&d=mm&r=g"},"meta":[],"_links":{"self":[{"href":"http:\/\/test.local\/wp-json\/wp\/v2\/users\/1"}],"collection":[{"href":"http:\/\/test.local\/wp-json\/wp\/v2\/users"}]}}]

こんな感じで "link": "slug": の所にIDが表示されています。

アーカイブページを非表示にしていても上記のように REST API で簡単に ID が表示出来てしまうので、アーカイブが見えなければ安全というわけでもありません。

では、どうすればいいのか?

プラグインを使って、投稿者スラッグを書き換える

WordPress の公式ディレクトリーに便利なプラグインがいくつかあるので、それを利用して投稿者のスラッグを書き換えます。

今回は、ishitaka さんの XO Security を使用してみます。

「プラグイン」>「新規追加」の画面で右上の検索ボックスに「xo」と入力するとすぐに見付かります。
プラグインのインストール画面
「今すぐインストール」をクリックしてプラグインをインストールし、「有効化」します。
XO Security を有効化
プラグインを有効化できたらプラグインの一覧画面で、XO Security の「設定」をクリックするか、「設定」>「XO Security」をクリックすると設定画面が開きます。
いくつかあるタブの中から「秘匿」をクリックします。
今回設は、「投稿者スラッグの編集」をオンにして「変更を保存」ボタンをクリックします。
プラグインの設定ができたので、投稿者スラッグを書き換えます。

「ユーザー」>「プロフィール」の一番下に「投稿者スラッグ (Nicename)」の項目が追加されているので、IDとは別の英数字を入力し、「プロフィールを変更」ボタンをクリックします。

投稿者スラッグ (author slug) には英数字、アンダースコア(_) 、ダッシュ(-)しか含めることができません。

これで、 /?author=1/wp-json/wp/v2/users でアクセスしてもログインIDが外から見えなくなります。

/?author=1 でアクセスしても書き換えたスラッグがURLに表示される。

試しに、ログインIDを入力 (http://test.local/author/test/) してアクセスすると、404になります。

REST API のスラッグも変更されます。

[{"id":1,"name":"\u7ba1\u7406\u8005","url":"http:\/\/test.local","description":"","link":"http:\/\/test.local\/author\/nicename\/","slug":"nicename","avatar_urls":{"24":"http:\/\/0.gravatar.com\/avatar\/c2b06ae950033b392998ada50767b50e?s=24&d=mm&r=g","48":"http:\/\/0.gravatar.com\/avatar\/c2b06ae950033b392998ada50767b50e?s=48&d=mm&r=g","96":"http:\/\/0.gravatar.com\/avatar\/c2b06ae950033b392998ada50767b50e?s=96&d=mm&r=g"},"meta":[],"_links":{"self":[{"href":"http:\/\/test.local\/wp-json\/wp\/v2\/users\/1"}],"collection":[{"href":"http:\/\/test.local\/wp-json\/wp\/v2\/users"}]}}]

まとめ

  1. WordPress のログインIDは、デフォルトのままでは簡単に見えてしまうので、「ニックネーム」を設定して「ブログ上の表示名」を変更しておこう!
  2. プラグインを利用するなどして、投稿者アーカイブや REST API のデータにログインIDがそのまま表示されないようにしよう!

WordPress のセキュリティ対策は他にもいろいろありますが、最低限ログインIDだけでも外から見えないようにしておきましょう。

以上、「WordPress のセキュリティ対策で、これだけはやっておいた方がいいぞ!と思うこと」でした。


追記

「XO Security」 は、かなり優秀なプラグインです。
作者の ishitaka さんは、日本語 WordPress のサポートフォーラムでも毎日のように回答されている方です。
管理画面も日本語なので、分かりやすく色々な設定ができます。
このサイトでも他のプラグインと組み合わせて利用しています。


アドベントカレンダー参加者募集中!
WP ZoomUP Advent Calendar 2021

WordPressに関することや、WP ZoomUPで開催したセッションやディスカッションの体験報告、WP ZoomUPで得た知識の活用事例など、なんでもOKです!

みなさんのご参加お待ちしております!!