WordPress のユーザー名を隠しセキュリティ強化
はじめに
多くの WordPress サイトでユーザー名(ユーザー ID)が分かる状態です。例え、ニックネームを使っていてもユーザー名が分かります。
難解なパスワードを設定していれば、重大なセキュリティリスクではありません。
ただ、WordPress は世界最大の CMS 。最も攻撃対象になりやすいため、ユーザー名を簡単に攻撃者に明かすのは要注意かもしれません。
そこで、投稿者リンクとコメントリストのユーザー名を隠す方法の紹介です。
この記事を書くために、以下のユーザー名とニックネームのテスト環境を作りました。
- ユーザー名:tonkotu
- ニックネーム:博多ラーメン
尚、ユーザー名に admin の使用は避けるべきです。また、ユーザー名とニックネームには、異なるものを設定します。
投稿者のリンクを変更
多くのテーマで、投稿ページや固定ページに投稿者が出力されます。「Twenty Nineteen」や「Twenty Seventeen」など公式テーマでも出力されます。
この投稿者のリンクは、多くのケースでユーザー名が含まれます。
ニックネームの博多ラーメンのリンクに、ユーザー名の tonkotu を確認できます。
当然、リンクをクリックすれば、投稿者アーカイブページの URL にもユーザー名の tonkotu が含まれます。
テーマによっては、投稿者名に hentry や schema.org で構造化データがマークアップされています。そのため、投稿者名の非表示は難しいかもしれません。
そこで、投稿者名を呼び出しているテンプレートに手を加え、このリンクを変更します。ただ、テーマによってテンプレートは異なるため、お使いのテーマに合わせてカスタマイズを行う必要があります。
Simplicity の場合
Simplicity をお使いであれば、2 つの方法で投稿者のリンクを変更できます。
1 つ目は、テーマ設定からの変更です。WordPress 管理画面 → 外観 → カスタマイズ → レイアウト(投稿・固定ページ)より、「投稿者情報を Twitter ID に」にチェックを入れます。
これだけで、SNS 設定で指定したご自身の Twitter の URL にリンクが変わります。
2 つ目は、テンプレートの変更です。Twitter 以外のリンクにしたい場合には、author-link.php を変更します。
FTP ソフトやサーバーのファイルマネージャー機能を使い、親テーマの 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 を書きます。例えば、プロフィールページの 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;
});
パスワードを難解にする
WordPress に限らず、パスワードは超難解にすべきです。
このサイトでは、大文字・小文字・数字・記号を含めた 100 桁のパスワードを設定しています。
Bitwarden や LastPass、1Password などのパスワード管理ツールを使えば、超難解のパスワードを簡単に生成・管理ができます。
私は PC でもスマホでも、基本無料で使える Bitwarden を使っています。
ログインページに簡単にアクセスさせない
ユーザー名を明かさない以上に大切なのが、WordPress のログインページを隠すことです。
WordPress のデフォルトでは、ドメイン/wp-login.php
でログインページにアクセスできます。また、ドメイン/wp-admin
でも、ドメイン/wp-login.php
にリダイレクトされます。
ユーザー名とパスワードの漏洩してもログインしにくくするために、ログインページに簡単にアクセスできないようにします。
ログインページの URL を変更すれば、ドメイン/wp-login.php
にアクセスすると 403 エラーになります。
やり方は、WordPress テーマ Luxeritas の制作者るなさんが WrdPress のセキュリティ強化方法 で紹介されています。見出しの「ログインページの URL 変更」の部分です。ログインページのディレクトリ名が、新たなログインページの URL になります。
また、SiteGuard WP Plugin などのセキュリティプラグインを使ってもログインページの URL を変更できます。