- LINEのリアクション機能が進化!好きな絵文字で気持ちを伝えよう
知らないうちに漏洩しているWordPressのユーザー名(ログインID)を不正ログイン対策として非公開にする方法
知らないうちに漏洩しているWordPressのユーザー名(ログインID)を不正ログイン対策として非公開にする方法
こんにちは、チーフクリエイターのSHOJIです。
世界中で広く利用されているWordPress。基本的に無料で利用でき、カスタマイズの自由度が高いというメリットで人気なのですが、CMSの中でも非常にシェアが大きいためサイバー攻撃の標的になりやすいというデメリットも持ち合わせています。
カスタマイズの自由度が高いことが逆に脆弱性のリスクを伴うため、被害に遭わないようしっかりと対策を行なうことが重要です。
そこで今回は、WordPressのデフォルトのままでは不正ログインの被害に遭う可能性が高い設定と、その対策についてご紹介していきます。
- \\ 目 次 //
- ユーザー名(ログインID)が確認できてしまう問題
- 「?author=1」で表示されるユーザー名への対応
- 「wp-json/wp/v2/users」で表示されるユーザー名への対応
- あとがき
ユーザー名(ログインID)が確認できてしまう問題
開発者がWordpressサイトのログインURLを変更していない限り、悪意を持ったユーザーは簡単にそのサイトのログイン画面を表示できてしまいます。
ログイン画面では「ユーザー名」「パスワード」を入力する必要がありますが、そのどちらかだけでも情報が知られてしまうと不正にログインされてしまう可能性が高まるのはご存じの通り。
そのため、WordPressデフォルトのユーザー名である「admin」を利用せず出来る限り分かりづらいユーザー名をみなさん設定されていると思いますが、WordPressデフォルトのままでは第三者が簡単にユーザー名を確認できてしまいます。
今回ご紹介する「ユーザー名を確認できてしまう方法」は以下の2点、それぞれサイトURLの末尾に文字列を加えて実行するとユーザー名(ログインID)が確認できてしまいます。
・「?author=1」
・「wp-json/wp/v2/users」または「?rest_route=/wp/v2/users」
まずは一度、上記2点の両方を試してみてください。実行してみてユーザー名が確認できてしまうようであれば、直ちに2点それぞれ対策することをお勧めします。
「?author=1」で表示されるユーザー名への対応
まずは、サイトURLの末尾に「?author=1」と入力した場合を見ていきましょう。
仮にユーザー名が「hogehoge」と登録されていたとして「ドメイン/?author=1」を実行すると、遷移したページのURLが「ドメイン/author/hogehoge」と表示され、利用しているテーマや開発状況によってはページ内やブラウザタブにユーザー名が表示される場合があります。
これは、投稿者アーカイブへのリダイレクトによってユーザー名が表示されてしまった結果になります。みなさんは大丈夫でしたか?
それではここから、「?author=1」で表示されるユーザー名への対応手順です。
① WordPressサイトの.htaccessファイルを開きます。
② .htaccessファイル内に以下のコードを追記します。
※URL部分はご自身のサイトURLを入力してください
See the Pen WordPress:投稿者アーカイブへのリダイレクトで表示されるユーザー名を隠す by InfoConnect (@infoconnect-inc) on CodePen.
「?author=1」で表示されるユーザー名への対応は以上となります。
コードの内容は、サイトURL末尾に「?author=数字」といったクエリ文字列(URLパラメーター)が付与されていた場合、トップページにリダイレクトさせるといったものとなります。
対応後、あらためて「ドメイン/?author=1」を実行してみてください。対応が間違っていなければご自身のサイトトップページに遷移していると思います。
万が一、対応前と同様に「ドメイン/author/hogehoge」のページに遷移した場合は設定が間違っていると思われますので、設定を見直してみてください。
「wp-json/wp/v2/users」で表示されるユーザー名への対応
次に、サイトURLの末尾に「wp-json/wp/v2/users」と入力した場合を見ていきましょう。
同様に、ユーザー名が「hogehoge」と登録されていたとして「wp-json/wp/v2/users」を実行すると、ご自身のサイト情報が表示された「ドメイン/wp-json/wp/v2/users」というページに遷移してユーザー情報が確認できてしまいます。
これは、WP REST API で取得されたユーザー名が表示されてしまった結果になります。みなさんは大丈夫でしたか?
それではここから、「wp-json/wp/v2/users」で表示されるユーザー名への対応手順です。
① WordPressサイトのfunctions.phpファイルを開きます。
② functions.phpファイル内に以下のコードを追記します。
See the Pen WordPress:WP REST API で表示されるユーザー名を隠す by InfoConnect (@infoconnect-inc) on CodePen.
「wp-json/wp/v2/users」で表示されるユーザー名への対応は以上となります。
functions.phpファイルに追記したコードは、ユーザー名に関するデフォルトのREST APIエンドポイントを無効化するものとなるため「ドメイン/wp-json/wp/v2/users」とエンドポイントを指定されたり、サイトURL末尾に「?rest_route=/wp/v2/users」といったクエリ文字列(URLパラメーター)が付与されていた場合「404エラー」が返されるといったものとなります。
対応後、あらためて「ドメイン/wp-json/wp/v2/users」を実行してみてください。対応が間違ってなければ『URLとリクエストメソッドに一致するルートが見つかりませんでした』のメッセージとともに「404エラー」が返されていると思います。
万が一、対応前と同様にユーザー情報が表示されている場合は設定が間違っていると思われますので、設定を見直してみてください。
あとがき
WordPressを利用したサイトがサイバー攻撃の標的になることが多いという点は事実です。CMSのシェアが大きくカスタマイズの自由度が高いので、その分リスクヘッジを図る必要があります。
今回ご紹介した2点の対応以外でも、サイトマップ内にユーザー名に含まれる投稿者アーカイブやコメント機能からユーザー名が確認できてしまいます。
開発者にとって日々のチェックと不測の事態に備えるバックアップとともに、ユーザー名の漏洩に関する対応は必須と言えるでしょう。
[Webの豆知識]関連記事
Service
Contact
インフォコネクトに相談してみませんか?
経営コンサルティングからITサービス活用支援、ホームページ制作などに関するご依頼や、ご質問・ご相談など、なんでもお気軽にお問い合わせください。