WPの投稿者アーカイブを無効化する

WPの投稿者アーカイブを無効化する

CMSで構築したWebサイトでは、管理画面にログインするためのユーザー名が漏洩しないように対策が必要です。

WordPressの場合、例えば「https://example.com/?author=1」のようにURLの末尾に「?author=<ユーザーID>」を付加してアクセスすると、デフォルトではそのユーザーが投稿した記事のアーカイブ(記事一覧)が表示されます。その際、アクセスしたURLはリライトされて、ブラウザのアドレス欄には「https://example.com/author/<ユーザー名>/」と表示されてしまいます。

ユーザーIDは、ユーザーを追加するごとに「1」から順に数字が割り振られます。つまり、WordPressをインストールして最初に作成される、最も強力な管理者権限を持つユーザーのIDは「1」です。管理者ユーザーを作成し直せば別のIDが割り振られますが、それでも「1」から順に総当たりすれば、管理者権限を持つユーザー名にたどり着くでしょう。

投稿者ごとの記事一覧ページ(投稿者アーカイブ)は、複数のライターが執筆するメディアサイトでもなければ、必要となるケースは少ないと思います。必要なければ、無効化してしまいましょう。テーマファイルの functions.php に次のコードを追加することで、投稿者アーカイブを無効化できます。

functions.php に記述するコード例

/* functions.php */

// 投稿者アーカイブを無効化
function disable_author_archive( $query ){
  if( !is_admin() && is_author() ){
    $query->set_404();
    status_header( 404 );
    nocache_headers();
  }
}
add_action( 'parse_query', 'disable_author_archive' );

コード不解説

コードの解説はほかのサイトに譲りたいと思います (^^;

WordPress の最大の強みは利用者が多いことで、Web 上にこうした Tips 情報があふれています。情報が多いことはよいですが、玉石混淆といった状況ですね。見極めが大切かなと思います。