WordPressのユーザ名(ログイン名)を隠すには、テーマが生成するメタデータ確認とAuthor Archivesのスラッグ変更が必要


この記事は2013年10月に掲載されたものです。
状況が変わったり、リンク先が変わっている可能性があります。

WordPressの管理者ユーザ名をデフォルトの「admin」のままにしていると、ブルートフォース攻撃への脆弱性があるため、別のユーザ名を使用することが推奨されている。もちろん、サイトに表示される作成者も別の表示名にする。

ここまでは多くのユーザが意識しているようだが、ユーザ名を完全に隠すためには、さらに下記2点に注意する必要がある。

  1. 使用しているテーマが、メタデータとしてソース中にユーザ名を記述していないか。

    このサイトで使用しているテーマ「plaintxtblog」が、まさにこのパターンだった。body要素と各記事のclass属性にユーザ名が記述されていた。下記「********」の部分である。

    (投稿の場合=2010/10/06作成、2013/10/20表示)

    <body class="wordpress y2013 m10 d20 h04 single s-y2010 s-m10 s-d06 s-h11 s-category-society s-author-********">
    <div id="post-1982" class="hentry p1 post publish author-******** category-society y2013 m10 d06 h11">
    

    (固定ページの場合=2010/06/08作成、2013/10/20表示)

    <body class="wordpress y2013 m10 d20 h06 page page-author-********">
    <div id="post-2" class="hentry p1 page publish author-******** category-life y2010 m06 d08 h12">
    

    テーマのための関数(functions.php)で生成される独自のメタデータだが、なぜ表示名ではなくログイン名にするのか、意味がわからない。当該の3個所をコメントアウトすることにした。

    plaintxtblog ver.4.7.0/テーマのための関数(functions.php)

    (Produces semantic classes for the body element)

    	if ( is_single() ) {
    		the_post();
    		$c[] = 'single';
    		if ( isset($wp_query->post->post_date) )
    			plaintxtblog_date_classes(mysql2date('U', $wp_query->post->post_date), $c, 's-');
    		foreach ( (array) get_the_category() as $cat )
    			$c[] = 's-category-' . $cat->category_nicename;
    //			$c[] = 's-author-' . get_the_author_meta('login');
    		rewind_posts();
    
    	elseif ( is_page() ) {
    		the_post();
    		$c[] = 'page';
    //		$c[] = 'page-author-' . get_the_author_meta('login');
    		rewind_posts();
    	}
    

    (Produces semantic classes for the each individual post div)

    //	$c[] = 'author-' . get_the_author_meta('login');
    

    plaintxtblogを使用しているユーザを検索してみると、この点を放置している人が多い。また、plaintxtblogのベースになった「Sandbox」も同じ仕様なので注意。

    こうしたメタデータを独自にソースに書いてしまうテーマはほかにもあると思うので、ソースをログイン名で検索して確認することが必要だ。

  2. Author Archivesのスラッグを変更しているか。

    WordPressで自動生成されるAuthor ArchivesのURLが、「http://example.com/author/ユーザ名/」になっている。これも表示名ではない。

    Author Archivesは「http://example.com/?author={user_id}」の形式でも呼び出せるため、{user_id}を1から順にカウントアップしていけば、1の「admin」を削除していても、すぐにAuthor Archivesが表示されてしまう。

    これについては、Author ArchivesのURLに表示されるスラッグを変更する、「Edit Author Slug」などのプラグインを入れて対応するのがよい。先達サイト「dogmap.jp」が詳しく紹介している。

    Author ArchivesのURLはWordPressコアプログラムの脆弱性なので、本体側で対応されることが望ましいと思う。