初心者コーダーのための
HTML/CSS JavaScript PHP WordPress
難しい言葉や概念より、実践重視の入門ブログ
WordPress

【WordPress】functions.phpでおすすめの記述【セキュリティの強化】

【WordPress】セキュリティ functions.phpに記述してセキュリティを強化しよう!

ワードプレスは、ユーザー名がバレてもパスワードがあるからOK的なスタンスをとっています。

しかしこれだと、パスワードが割れただけで突破されてしまいます。

えふぃ

ユーザー名が公開されている状態は、セキュリティ上決して好ましいものではありません。

functions.phpとは、ワードプレスの様々な機能を制御するためのファイルです。

今回はセキュリティ強化のため、functions.phpに記述しておきたいおすすめの記述を紹介します。

何も考えずコピペをするだけでセキュリティを強化できるので、是非ご活用ください。

サンプルコードの使い方

コード右上のアイコンをクリックすることでコピーできます。

それでは本文へ、レッツゴー!

functions.phpの書き方

functions.phpは基本的に、ひたすらPHPの記述をしていきます。

なので、このようにしておきましょう。

<?php

2行目から、必要に応じた記述をしていきます。

また、閉じタグ(?>)は不要です。

最初から最後までひたすらPHPの場合、閉じタグは記載しなくてOKなのです。

記載してもいいのですが、記載しないことが推奨されています。

えふぃ

ものすごく簡単にいうとくだらないエラーを回避するためです。

それでは、セキュリティを強化するためのおすすめの記述に移りましょう!

① functions.phpへの不正アクセスを回避する

if (!defined('ABSPATH')) exit;

外部からfunctions.phpへの不正アクセスを回避するための記述です。

ほぼ全てのプラグインに記載されています。

functions.phpも例外なく、記載しておきましょう。

② URL/?author=1でのユーザー名バレ回避

えふぃ

さて、ここでは実際に試してみますよ!

自身のワードプレスサイトURLの後ろに「/?author=1」をコピペしてジャンプしてみましょう!

すると…

えふぃ

わぁ!!!

見事にIDが1のユーザー名が表示されました!

さて、これを今から回避していきますよ!

function my_template_redirect() {
    if (is_author() ) {
        wp_redirect( home_url());
        exit;
    }
}
add_action( 'template_redirect', 'my_template_redirect' );

これでもう一度「/?author=1」をお試しください。

ユーザー名が表示されることなく、ホームにリダイレクトされるようになりました!

③ URL/wp-json/wp/v2/usersでのユーザー名バレ回避

先ほどと同様、URLの末尾に「wp-json/wp/v2/users」とコピペしてジャンプしてみましょう!

さて、謎の文字列が大量に出てきましたね!

よーーーく見てください…

えふぃ

よーーーく見るのがめんどくさい方は「name」で検索してください。

むむむ!

ワードプレスの全てのユーザー名が表示されていますね!

これも回避しておきましょう

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 );

改めて「wp-json/wp/v2/users」をコピペしてジャンプしてみましょう。

謎の文字列が出てきますが、無事にユーザー名は表示されなくなりました。

functions.phpにコピペしておくべきおすすめの記述

以上3つがコピペで手軽にセキュリティを強化する記述でした!

/*--------------------------------
① functions.phpへの不正アクセスを回避する
---------------------------------*/
if (!defined('ABSPATH')) exit;

/*--------------------------------
② URL/?author=1でのユーザー名バレ回避
---------------------------------*/
function my_template_redirect() {
    if (is_author() ) {
        wp_redirect( home_url());
        exit;
    }
}
add_action( 'template_redirect', 'my_template_redirect' );

/*--------------------------------
③ URL/wp-json/wp/v2/usersでのユーザー名バレ回避
---------------------------------*/
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 );

ちょっとした注意

ワードプレスの基本的なスタンスは「パスワードがあるからユーザー名はバレてもOK」です。

ユーザー名はオープンなのがデフォルトなのです。

よそのワードプレスサイトで勝手に試して、ユーザー名が分かったからって

なんだこのサイトセキュリティガバガバだな〜

なんて思わないようにしましょう!

ユーザー名を公開するか非公開するかについては、個人によりけりです。

これだけではなく、BASIC認証を使ってログイン画面へのアクセスを回避したり、パスを変更してログインURLを変更したりなど、セキュリティを強化する方法は他にもあります

ただただ、ユーザー名なんて公開する必要がなければ、しないに越したことはないよね

という話なのでございます。

今日もあなたが夢に向かって一歩前進できていますように。
お疲れ様でした。