皆様こんにちは。開発部・アニマル部署統括のPです。
今日は前回に引き続きWordPressのセキュリティ対策の第2弾です。
前回の記事 → [WordPress]セキュリティ対策に最低限するべきこと(初心者向け)
今回はログインIDを守る方法を書いていきたいと思います。
WordPressでサイトを構築する方の多くが、「お知らせ」や「ブログ」などの機能を付けることが多いと思います。
こうした投稿はアドレスバーに
https://(サイトURL)/category/(カテゴリーのスラッグ)/
と打ち込めばカテゴリー別の投稿一覧を表示することができますよね。
また、タグを利用している場合、
https://(サイトURL)/tag/(タグのスラッグ)/
とすればタグ別の投稿一覧を表示することができます。
そのほかに、投稿者別の一覧ページ(投稿者アーカイブ)があるのをご存じですか?
https://(サイトURL)/author/(ユーザー名)/
とすることでそのユーザーが投稿した記事の一覧を表示します。
しかしこのURL、ユーザー名が丸出しなので危険ではありませんか(*_*;?
↑ユーザー名が「admin」の場合
うちは投稿者別の一覧ページは使用しないから大丈夫、と思ったそこのあなた。
https://(サイトURL)/?author=1
とアドレスバーに入力しアクセスしてみてください。
↓ すると、先ほどの投稿者一覧ページへリダイレクトします。
↑最初に登録したユーザー名がadminの場合、https://(サイトURL)/?author=1とすればhttps://(サイトURL)/author/admin/へリダイレクトする。
author=の後の数値はWordPressのログインユーザーの内部管理ID(データベース上ではwp_users.ID)のこと。
複数のログインユーザーが存在する場合は?の後の値をauthor=2、author=3と変えれば各ユーザーごとの記事一覧ページにアクセス可能です。
このURLは管理画面のユーザープロフィールからニックネームや、ブログ上の表示名を変更しても変えることはできません。
ということで、WordPressのログインユーザー名を知らない人でも、対策をしていなければ、
上記のURLへアクセスするだけでユーザー名は知る事ができてしまうのです。
前回の記事でもお伝えした通り、ログイン画面のURLも推測されている場合、残るはパスワードのみ…
推測可能なパスワードを設定している場合はすぐに管理画面へログインできてしまいます。
【対策方法】
● 投稿者別の一覧ページ(投稿者アーカイブ)自体が不要な場合
functions.phpにリライトルールを追加し、投稿者別の一覧ページを削除する方法をご紹介します。
ゲットパラメータにauthorが指定されている・もしくはURLにauthorが含まれている場合は404ページへリダイレクトする設定です。
※ 404.phpがない場合は事前に用意しておいてくださいね。
1 2 3 4 5 6 7 8 9 10 11 |
/** * 投稿者アーカイブを無効化 */ add_filter( 'author_rewrite_rules', '__return_empty_array' ); function disable_author_archive() { if( $_GET['author'] || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){ wp_redirect( home_url( '/404.php' ) ); exit; } } add_action('init', 'disable_author_archive'); |
● 投稿者別の一覧ページ(投稿者アーカイブ)を使用する場合
ブログを複数人で更新している場合、投稿者ごとの記事一覧を使用したい場合もあるでしょう。
「Edit Author Slug」というプラグインで簡単に対策ができますのでこちらをおすすめします。
プラグインの新規追加で「Edit Author Slug」を検索し、インストール・有効化します。
有効化したらユーザー一覧 → 編集からユーザー情報を変更します。
「投稿者スラッグ」の設定項目にて、カスタム設定を選択し、任意の文字列を設定し、「プロフィールを更新」を押します。
※ 注意:「_(アンダーバー)」は使用せず、小文字の英数字を使うこと。
これでhttps://(サイトURL)/?author=1
にアクセスすると…
https://(サイトURL)/author/user-1/
へリダイレクトし、本来のユーザー名であるadminは表示されなくなりました!
※ ちなみに私が試したときは、何度かアクセスしてもhttps://(サイトURL)/author/admin/に飛んでしまい、
https://(サイトURL)/author/user-1/に切り替わりませんでした。
ブラウザのキャッシュをクリアすることで切り替わると思いますので試してみてください。
以上です。
WordPressのサイトをいくつか拝見してきましたが…
上記の対応をしているサイトって意外と少なかったです(‘_’)
制作するうえではこういった細かいところにも気を配っていきたいと思います。
ではまた~(‘ω’)ノ
タグ:Wordpress
2020.11.02