今回は、WordPressのセキュリティのお話です。
多くの方が運用しているWordPress。
実はログイン情報であるユーザー名は、誰でも特定できてしまいます。
WordPressの標準設定では、第三者からユーザー名が丸見えの状態です。
パスワードは様々なツールで解析することができるので、万が一悪意のある他人に標的とされてしまった場合、運用しているサイトが乗っ取られてしまう可能性もあります。
今回はユーザー名の特定方法と、その対策方法の備忘録です。
ユーザー名の特定を防ぐ方法(author情報編)
「author」とは、投稿者のアーカイブページのことを指しますが、アーカイブページを表示することでユーザー名の特定をすることができます。
一度、自分のサイトで確認してみましょう。
author情報でユーザー名を特定する
確認したいサイトURLの後ろに「/?author=1」をつけてアクセスをします。
当サイトだと「https://www.ice-military.com/?author=1」となります。
TOPページへリダイレクトされれば、そのサイトは既に対策がされている状態です。
第三者にユーザー名を特定されることはないので安心して大丈夫でしょう。
もし投稿者のアーカイブページが表示され、URLが「/author/ログインユーザー名/」と切り替わった場合は、第三者にユーザー名が見えている状態となります。
もし404エラーになった場合、「/?author=1」の最後の数字を順に増やしてみてください。
WordPewssに登録している、全ユーザーの投稿者アーカイブページを見ることができます。
対策方法
ユーザー名を特定されないために対策を施します。
テーマ内にあるfunction.phpを直接編集するので、必ずバックアップをとってから行ってください。
以下のコードを、function.phpに追加します。
1 2 3 4 5 6 7 |
function theme_slug_redirect_author_archive() { if (is_author() ) { wp_redirect( home_url()); exit; } } add_action( 'template_redirect', 'theme_slug_redirect_author_archive' ); |
ファイルをアップ後、再度「/?author=1」でアクセスしたら、TOPページにリダイレクトされれば設定完了です。
ユーザー名の特定を防ぐ方法(REST API 編)
WordPress4.7以降から本格的に導入された「REST API」。
「REST API」とは、WordPressのサイトのコンテンツを簡単に取得できるAPIを指します。
こちらもまた、標準でサイト情報が簡単に取得できるような状態になっているので、その確認方法と対策について確認しましょう。
REST APIでユーザー名を確認
サイトのURLの後ろに「/wp-json/wp/v2/users」をつけてアクセスします。
当サイトだと「https://www.ice-.military.com/wp-json/wp/v2/users」です。
アクセスをすると、画面に英数字の文字列が表示されます。
これがAPIで取得したデータです。
中身を確認すると、「link:」と「slug:」の項目があります。
link: | author情報で表示されたURL 「/author/ログインユーザ名/」 |
slug: | ログインユーザ名 |
この2項目で、ユーザー名を特定することできます。
もし上記の項目が表示されず、文頭に「code:rest_no_route」とある場合、そのサイトは既に対策をされている状態です。
第三者にユーザー名を特定されることはないので安心して大丈夫と言えます。
対策方法
ユーザー名を特定されないために対策をします。
テーマ内にあるfunction.phpを直接編集するので、必ずバックアップをとってから行いましょう。
以下のコードを、function.phpに追加します。
1 2 3 4 5 6 7 8 9 10 |
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 ); |
author情報とREST APIは、標準設定で簡単にユーザー情報を確認することができてしまいます。 直接コードに触れることに不安があれば、プラグインで設定する方法もあります。 WordPressを運用する際は、ユーザー名が特定されないように、必ず何かしらの対策をしておくと良いでしょう。
下図のように「code:rest_no_route~」と表示されれば完了です。まとめ
悪意のある方だとユーザー名/パスワードの特定をし、運用しているサイトにアタックしてくる可能性もあります。
プラグインでの方法は割愛します。
コメント