WordPressで投稿者アーカイブを出力させないようにする方法

はっきりとした事は不明だがWordPress日本語フォーラムの以下の報告を皮切りに改ざん報告がちらほらと見受けられる。

WordPress › フォーラム » サイト改ざん?

Googleの検索結果では2011年くらいにも同様の事例が引っかかるので、今に始まったわけじゃないようだが、ここ半年くらい、特にここ数週間は顕著なようだ。

今後、ロリポップやhetemlから何らかのアナウンスがあるんじゃないかと思うが、そんな中、node.jsをいじろうと思って契約したものの、全くいじっていないGehirn Web ServicesからWordPressの不正アクセスに関するメールが届いたため、一部抜粋して転載する。

日本時間の2013年8月28日 午後3時頃より、平常時よりも大量の WordPress ログインを試みる不正なアクセスが検出されています。
現在、弊社の分析局で攻撃手法や特徴を分析しております。

弊社の分析によりますと、 /?author=1 にアクセスすることで使用しているユーザー名が分かることから、 デフォルトの admin アカウント以外のユーザ名を設定されているお客様にも影響があると見られ、十分に注意が必要です。

ということで、どうやらWordPressの投稿者アーカイブが狙われているっぽいので、これを無効化するコードを二つ程紹介する。

投稿者アーカイブを非表示にする

以下のコードをテーマの functions.php に突っ込むとauthorクエリ(?author=xxx)を無効化して404を返すようになる。

function disable_author_archive($q) {
  if ( $q->is_admin ) {
    return $q;
  }elseif ( $q->is_author ) {
    unset( $_REQUEST['author'] );
    $q->set( 'author', '' );
    $q->set_404();
  }
}
add_action('parse_query', 'disable_author_archive');

参考:Disable the WordPress Public Search

上記の参考先では ?s= の検索クエリを無効化するものなので、気になる人はついでに利用すると良いんじゃないかと思う。

あるいは以下のコードでURLに author が含まれた場合、どこか適当なページにリダイレクトさせるようにする。

function redirect_author_archive() {
  if( isset($_REQUEST['author']) || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ){
    wp_redirect( home_url( '/404' ) ); //リダイレクト先
    exit;
  }
}
add_action('init', 'redirect_author_archive');

参考:WordPress › フォーラム » セキュリティ向上:ログインIDをURLにしたくない

他にもプラグインで対応可能かもしれない。

PhoneGapでカラーコード変換アプリを作成

単なる宣伝なんですが、アプリ登録の全体の流れを知るためにPhoneGapですげー適当に作ったカラーコード変換アプリがAppStoreで公開されました。

↓ついでにAndroid版も公開しました。全く同じコードで吐き出せるかと思いきや、Andoroidではなぜか navigator.notification.alert が上手く働かないため、jsの alert() をそのまま使ってます。あとグラデーションが妙に汚い。また、Andoridエミュレータで見たら重かったのでjQueryのアニメーションをカットした他、細かい部分を調整してあります。


Android app on Google Play

(さらに…)

IT起業アカデミア