WordPressセキュリティ対策として投稿者アーカイブなどからユーザー名を隠す方法(プラグイン無し)

記事の末尾には「著者名」が表示されています。
しかし実はこれが曲者なんです。
WordPressデフォルトだと、投稿者アーカイブページへリンクされています。
そして投稿者アーカイブのURLは「ドメイン/author/ユーザー名」。
つまり、投稿者名をホバーすると、投稿者のユーザーIDがわかってしまいます。

テスト1

テスト2

 

 

あるいは「ドメイン/?author=1」と打ち込んでみてください。
開かれたページのURLは、やはり「ドメイン/author/ユーザー名」です。

どういうことかと言いますと……。

質問者の写真

不正ログインしようとしてる人にわざわざ手掛かり教えるようなもの!
解答者の写真
セキュリティ上の問題がありますので対処しましょう

……と、本件問題について触れた記事の多くはここでリード文が終わります。

しかし実は、もっと根が深いんです。

質問者の写真

対策したつもりでもソース見たらわかっちゃうじゃん!
しかもユーザー名吐き出されてるのは投稿者アーカイブだけじゃないじゃん!

私はサイトセキュリティの専門家どころか、WEB屋ですらありません。
それでも素人なりに考えた徹底的な対策をとってみたいと思います。

なお、本稿ではプラグインを用いないで対処します。

 

対策をとる前に考えること

WordPressではデフォルトですと投稿者アーカイブを自動作成します。
このURLにユーザー名が含まれているというのが問題なわけです。

しかしそもそもの話として、まずこれを考えていただきたいです。

投稿者アーカイブって必要?

一人でサイトを運営して、一人で記事を投稿。
こんな場合には投稿者アーカイブなんて要らなくありません?
必要ない機能は止めてしまうのが抜本的な解決方法です。

一方、企業などですと、複数人の投稿者がいます。
この場合は投稿者アーカイブがあった方がいいでしょう。

以下、投稿者アーカイブを必要とする場合とそうでない場合とにわけて対策を講じます。

投稿者アーカイブを必要とする場合

対処法は、

解答者の写真
投稿者アーカイブのURL「ドメイン/author/ユーザー名」の「ユーザー名」部分を「ニックネーム」に変更し、リンクURLを書き換えることで対処します

つまり新しい投稿者アーカイブURLは「ドメイン/author/ニックネーム」となります。

 

 

 

functions.phpに次の記述をします。

 

 

 

 

 

対策その1 投稿者アーカイブを止める

 

WordPressではデフォルトですと投稿者アーカイブを自動作成します。
しかし一人で運営している場合など、そもそも投稿者アーカイブが不要な場合もあるでしょう。
必要ないなら機能を無効にしてしまいます。

子テーマのfunctions.phpに次の記述をしてください。

add_filter( 'author_rewrite_rules', '__return_empty_array' );

管理画面サイドバーの「設定」→「パーマネント設定」へ行き「変更を保存」を押します。
空押しで構いません。

念のためキャッシュを削除しておきます。

全て終わったら、記事ページで「著者名」を押してみて404が返ってくるかテストしてください。

 

 

 

 

しかも、これだけではありません。
対策を取ったつもりでも、ソースまで見るとわかってしまいます。

 

また、ブラウザのアドレス欄に「ドメイン/?author=1」と打ち込むと

 

 

 

投稿者アーカイブそのものの対処法

投稿者アーカイブの自動作成を無効にする

 

プラグインでURLに表示されるユーザー名を変更する

質問者の写真

削除できない!
複数で運営してるし投稿者アーカイブは必要なんだ!

という場合は、プラグイン「Edit Author Slug」で表示を変更してしまうのがお手軽です。

https://ja.wordpress.org/plugins/edit-author-slug/

 

 

 

「投稿者」の表示をどうするか

次に「投稿者」の表示を残すか、削除するかを考えます。
投稿者アーカイブは消えてもリンクは残ったままですので、ホバーすればIDがわかります。

つまり、

質問者の写真

①投稿者ごと非表示にする ②リンクだけ非表示にする ③リンク先を変える、だね

①について。
しかし投稿者を表示しないのはSEO的に望ましくありません。
却下します。

②について。

 

 

投稿者プロフィールページを作成する

「投稿者」の表示はどうしよう?

まず投稿者を非表示にすることが考えられます。
しかしSEO上、投稿者を非表示にするのは望ましくないのでパスします。

表示は残したままリンクだけ消す方法もあります。
しかしテンプレートを触ることになり、面倒くさいです。

かといって404のままにして置くのも気持ち悪いでしょう。

そこで、

投稿者プロフィールページを作成して、そちらへリンクを貼り直します

ここはテーマによって異なります。
複数ユーザーの場合

Cocoonの場合

ユーザー→

Luxeritasの場合

 

 

 

 

 

 

 

 

例えば、定番テーマの一つであるLuxeritasの作者るな氏のプロフィールページですと、こんな感じです。