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 情報があふれています。情報が多いことはよいですが、玉石混淆といった状況ですね。見極めが大切かなと思います。