WordPressのセキュリティ対策、もちろんやってますよね?自分のアカウント隠し

友「Googleアナリティクスで自分の作っていないページのアクセスが頻繁にあるんだけど、これ何かな?」
きっかけはこの一言からでした。
どんなページ?と思ったらなんと、https://ドメイン名/author/アカウント名
きゃー、これ、アカウントばれてますやーん。
ということで友に伝えました。
WordPressはきちんと設定しておかないとアカウント名がばれる
アカウント名がばれると何が起こるのでしょうか?
アカウントが判明しているので、悪意ある人がパスワードを解析し始めてしまいます。
では、パスワードがばれるとどうなるのでしょうか?
あなたのサイトにログインが出来てしまいます。
ではログインされるとどんな影響が?
あなたのサイトが超人気ブログサイトであれば、そのアカウントのパスワードを変更され、サイトが乗っ取られてしまうことになります。
やっと重要性が分かってきましたか?
乗っ取られてしまったら、、、
もうなんとなく想像つきますよね?
では、もう起こってしまったことなので仕方がありません。
対策を今からでも入れていきましょう。
まず、どうやってこのアカウントがばれてしまったのでしょうか?
残念ながらWordpressの便利な機能のおかげで結果、情報がばれてしまいます。
あなたのサイトのURLにちょっと付け足して情報が出ないかチェックしてみましょう。
http://あなたのドメイン名/?author=1
https://あなたのドメイン名/?author=1
URLが
http://あなたのドメイン名/あなたのサイトのアカウント名
https://あなたのドメイン名/あなたのサイトのアカウント名
になっていませんか?
そうなっていましたら、即対策しましょう。
対策方法
以下のソースを使用すると投稿者ページへアクセスしようとした際にすべてトップのページを表示する様に無理やり処理を変更しています。
さらに
既にほかのサイト等で紹介されている対策は以下のif の中だけですが、お勧めはelseifの方も追加する点です。
404というのはアクセスしたURLのページが存在しなかった場合のことです。
elseifではアクセスしたURLのページが存在しなかった場合に「ページがありません」を出すのではなく、トップのページに移動しています。
こうするとどういった影響があるのか、
それは、投稿者ページがあった場合はトップに戻る、なければ「ページがありません」が出る状況は、もうトップに戻った際にアクセスしたURLのアカウント名が存在することを物語っているからです。
上記理由から下記の2条件をトップに移動するよう修正を施すことをお勧めします。
最後に
404のアクセスしたページが存在しなかった場合にトップに戻すのが気持ち悪い場合は、
「wp_redirect( home_url());」の代わりに
「wp_redirect( home_url(‘/404.php’));」とを使用して何か別のページで「アクセスしたページがありません。」
というのを伝えるような処理にしてもよいかもしれません。
そこは好みでお任せします。
// 投稿者ページリダイレクト
function author_redirect() {
if( is_author() ) {
wp_redirect( home_url());
exit;
}
elseif ( ($_SERVER['REQUEST_URI'] != '/404.php') && is_404() ) {
wp_redirect( home_url());
exit;
}
}
add_action( 'template_redirect', 'author_redirect' );