WordPress のユーザー名を完全に隠しセキュリティ強化

WordPressのユーザー名を隠す方法

Akira

福岡在住ウェブデザイナー。Web サイト制作に役立つ情報を「見やすさ」と「使いやすさ」にこだわり紹介しています。

多くの WordPress サイトが、ユーザー名をさらけ出しています。

ニックネームを使っていても、ユーザー名が分かる状態です。

超難解なパスワードを設定していれば、重大なセキュリティリスクではありません。

ただ、 WordPress は世界最大の CMS 。最も攻撃対象になりやすいため、ユーザー名を簡単に攻撃者に明かすのは要注意。

ユーザー名を完全に隠すために、投稿者リンクとコメントリストへの対策が必要です。

ユーザー名とニックネーム

この記事を書くために、以下のユーザー名とニックネームのテスト環境を作りました。

  • ユーザー名 : tonkotu
  • ニックネーム : 博多ラーメン

投稿者のリンクを変更

多くのテーマで、投稿ページや固定ページの下に投稿者が出力されます。

WordPress のデフォルトでは、この投稿者のリンクにユーザー名が含まれています。

投稿者のリンクに含まれているユーザー名

ニックネームの博多ラーメンのリンクに、ユーザー名の tonkotu を確認できます。

当然クリックすると、投稿者アーカイブページの URL にも tonkotu が。ユーザー名が丸出しです。

投稿者アーカイブページのURLに含まれているユーザー名

テーマによっては、投稿者名に hentry や schema.org で構造化データがマークアップされています。なので非表示にするとまずい。

そこで、投稿者名を呼び出しているテンプレートに手を加え、このリンクを変更しないといけません。テーマによってテンプレートは異なるため、お使いのテーマに合わせてカスタマイズを行います。

Simplicity の場合

Simplicity をお使いであれば、 2 つの方法で投稿者のリンクを変更できます。

テーマ設定から変更

WordPress 管理画面 → 外観 → カスタマイズ → レイアウト( 投稿・固定ページ )より、「 投稿者情報を Twitter ID に 」にチェックを入れます。

Simplicityのテーマ設定

これだけで、 SNS 設定で指定したご自身の Twitter の URL にリンクが変わります。

テンプレートを変更

Twitter 以外のリンクにしたい場合には、 author-link.php を変更します。

親テーマの author-link.php を子テーマにコピペし、子テーマに設置した author-link.php から下記のコードを探します。

<a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"><?php the_author(); ?></a>

上記のコードを下記のものに書き換えます。

<a href="ここにURLを入力"><?php the_author(); ?></a>

ここにURLを入力に、リンクを張りたい URL を書けば OK 。このサイトではプロフィールページの URL を入力しています。

コメントリストからユーザー名を削除

ユーザー名は、投稿者が残したコメントからもバレてしまいます。

投稿者が書いたコメントをデベロッパーツールで確認すると、ユーザー名がクラス名に使われています。

コメントリストのクラス名に含まれているユーザー名

comment-author-tonkotu と、ユーザー名の tonkotu を確認できます。

コメントリストからユーザー名を削除するには、下記のコードを子テーマの functions.php に追加します。

add_filter( 'comment_class', function( $classes ) {
    foreach( $classes as $key => $value ) {
        if( stripos( $value, 'comment-author-' ) !== false ) {
            unset( $classes[$key] );
        }
    }
    return $classes;
});

もし、 comments.php などのコメントのテンプレートを変更している場合には、テンプレート内に追加しても構いません。

パスワードを難解にする

WordPress に限らず、パスワードは超難解にすべきです。

このサイトでは、大文字・小文字・数字・記号を含めた 100 桁のパスワードを設定しています。

LastPass や 1Password などのパスワード管理ツールを使えば、超難解のパスワードを簡単に生成・管理ができます。

私は PC でもスマホでも、基本無料で使える LastPass を使っています。

ログインページに簡単にアクセスさせない

ユーザー名を簡単に明かさず、パスワードを超難解にした上で、もう 1 つやりたいことがあります。

それが WordPress のログインページを隠すこと。

多くのサイトが、ドメイン/wp-login.php でログインページにアクセスできる状態です。また、ドメイン/wp-admin でも、ドメイン/wp-login.php にリダイレクトされます。

ユーザー名とパスワードの漏洩に備えるために、ログインページに簡単にアクセスできないようにします。

このサイトではログインページの URL を変更し、 https://firstlayout.net/wp-login.php にアクセスすると 403 エラーを出すようにしています。

wp-login.phpにアクセス時の403エラー

やり方は、 WordPress テーマ「 Luxeritas 」の作成者るなさんが WrdPress のセキュリティ強化方法でご紹介されています。見出しの「 ログインページの URL 変更 」の部分。

ログインページのディレクトリ名が、新たなログインページの URL になります。

プラグインを使っても似たことはできますが、自前でやるのが理想です。むやみにプラグインを使うと、サイトが遅くなります。