今回は、実際に業務で行っているWordPressで作成したホームページに対して施しているセキュリティ対策をご紹介いたします。
WordPress(ワードプレス)は、オープンソース(※1)なので、セキュリティ設定をきちんと行っておかないと、情報をネット上にさらけ出してしまうことになります。
使用しているテーマ(テンプレート)によっては、対策されているものもあるかと思いますが、会社のホームページをオリジナルテーマで制作してもらったという方は特に注意が必要です。
※1:ソフトウェアを構成しているプログラムを無償で一般公開していること
実際にどういうものがあるかというと
- URLに「サイトのURL/wp-login.php」を入力すると管理画面が表示される
- URLに「サイトのURL/?author=1」を入力するとログインIDが表示される
- URLに「サイトのURL/wp-json/wp/v2/users」を入力すると色んな情報が表示される
- お問い合わせによく使う自動返信機能を使って、不正に大量にメールを送信されてしまう
1.はWordPressを使っている人なら『管理画面のログイン画面だから当たり前じゃん』と思われるかもしれませんが、そこが落とし穴です。
ホームページの監視をしていると、海外からこの管理画面ログインページに不正アクセスし、色んなパスワードでログインを試しているのが分かります。
なのでこちらもしっかり対策をする必要があります。
この設定を行うだけで不正アクセスされる割合もかなり低くなるので、「WordPress使っているよ」という方は是非、設定を行ってみてください。
ただし、この対策方法では、ソースコード(プログラム)を編集しないといけないものもあります。
誤って修正すると、ホームページが表示されなく恐れもあるので、自信のない方はWordPressの知識がある程度あって、ソースコード(プログラム)を変更したことがある人にお願いしましょう。
「サイトのURL/?author=1」などでアクセスするとユーザー名(ログインID)が閲覧できるのを防ぐ
ブラウザのURL入力欄に、ホームページのURLの後に続けて”/?author=1″を入力すると、何も対策を行っていない場合、ログインIDがURL入力欄に表示されます。
ホームページ制作会社に依頼して作成してもらったホームページでも、意外と対策をしていないことがあります。
簡単に防げるので必ず設定を行っておきましょう。
ちなみ”author=”の後の数字は、登録しているユーザーの番号になります。
例えば、ログインユーザーを2アカウント登録していた場合は、”author=2”と入力すると2番目のアカウント情報が表示されます。
ただし、WordPressのバージョンにより解消されている恐れもあるのでその都度、確認する方が無難ですね。
※2024.1.18 現在の最新バージョンWordPress 6.4.2 では上記コードを入力するとログインIDが表示されております。
URLにログインIDが表示されないようにする
“/author=”の入力でログインIDがURLに表示されない対策を行うには、ソースコード「functions.php」を修正します。
functions.php に以下コードを入れることで、ログインIDが表示されないようになります。
以下のコードをfunctions.phpにコピペしましょう。
// ログインID表示対策
function disable_author_archive_query() {
if( preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING']) ){
wp_safe_redirect( home_url() );
exit;
}
}
add_action('init', 'disable_author_archive_query');
WP REST API 対策
WordPress 4.7 から「WP REST API」がデフォルトで有効になっており、
ユーザー情報などのデータを外部から取得する事ができるようになっています。
サイトURLに後に続けて以下のように入力してみると何の対策がされていない場合、色んな情報が表示されます。
「サイトのURL/wp-json/wp/v2/users」
「WP REST API 」の対策を行うには、functions.php に以下コードを追加することで「WP REST API」 を無効にすることができます。
//WP REST API を無効化
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 );
こちらの処理はWordPressのバージョンによっても解消されている恐れもあるので、確かめてから追記するようにしましょう。
お問い合わせフォーオムの対策
ブログやホームページを運用されている方のほとんどがお問い合わせフォームを設置しているかと思いますが、こちらもしっかり対策を行っていないと不正利用され、あとで困ったことになりかねません。
こちらのサイトはContact Form7 というプラグインを利用して、お問い合わせページを作成していますが、自動返信機能を利用しているときに注意が必要になります。
自動返信機能とは、お問い合わせをしてくれたユーザーさんが、問い合わせ送信の際に自分宛てにも自動的に問い合わせた内容を送ってくれる機能です。
メールアドレス入力欄にたくさんのメールアドレスを入力することで、スパムメールを送り付ける手法になります。
主に海外から不正利用され、手入力ではなくプログラムを組んで自動的にスパムメールを送信していると思われます。
こちらの対策としては、2つ方法があり、1つ目は名前の入力欄にふりがなの入力欄を追加し、ふりがなが入力されているかチェックすることでスパムメールを防ぐことができます。
2つ目は、reCAPTCHA を利用することでスパムメールを防ぐことが可能となっています。
その他
その他にセキュリティ情報を随時チェックするためにおすすめのサービスがあります。
それは情報処理推進機構が提供している「セキュリティ対策情報」です。
こちらはWordPressのプラグインの脆弱性にも触れているので、気になる方は是非登録されておくとよいです。
