2017年4月22日

【ユーザー名バレ】WordPressブログURLに?author=1を付けるとログインIDが分かる問題解決。

スポンサードリンク

 驚きました、WordPressの謎の仕様に。
自分のトップページURLに、
?author=1 を足すと投稿者別のアーカイブ一覧が見られます。

便利ですよね、便利なんですけど、
ユーザー名(ログインする際に使うID)がアドレスバーに表示されてしまいます。

ブログ管理者すぐ対策を、ユーザー名はバレている


 WordPressは非常に使いやすく便利な仕様になっています。
便利さを追及しすぎて、ユーザー名を隠す/隠したい人には厄介な問題が発生します。


 私の感覚ではユーザー名は隠すべきだと思います。
ログインの時に使うからです。

第三者にユーザー名が分かってしまうと、
あとはログインパスワードだけで突破されますからね。

ブルートフォースアタック
https://wpdocs.osdn.jp/%E3%83%96%E3%83%AB%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%82%B9%E6%94%BB%E6%92%83

パスワードを複雑で、他のWEBサイトとは別のものにしておくのは当然。

でも、万が一、パスワードが何らかの原因で漏れた時、
ユーザー名がサイト上でバレバレだったらもうどうしようもありません。

とりあえず、ユーザー名は隠しましょう。
まずはユーザー名、ニックネームのおさらいをします。

ユーザー名をニックネームに変更/ユーザー名変更


 以前、私が投稿したブログが、以下にあります。
これらも大事なので是非ご覧ください。

WordPressでニックネームを作って、
ユーザー名が投稿に出ないようにする設定です。

ユーザー名をニックネームに変更。ユーザー名を投稿者名にするのはセキュリティ上危険。

こちらはユーザー名変更について載せています。

ユーザ名がadminは危険。ドメインや名前等推測される物は絶対に避けよう。


 今はあまりいないと思うのですが、
ユーザー名がadminのままの方は、
ユーザー名を変更する事を強くおすすめします。

セキュリティ上好ましくありません。
やり方は…

新しいユーザーを作成し、
元のユーザー名からログアウトし、
新しいユーザー名でログイン、
元のユーザー名を削除するのですが、ここで注意。

削除の際、

すべての投稿を以下のユーザーにアサイン

をしないと、
今までの投稿が元のユーザー削除と共に消えてしまいます。

新しいユーザーに、今までの記事を渡す(移す)必要があります。
そして元のユーザーを削除するのです。
「すべての投稿を以下のユーザーにアサイン」すれば可能です。


 以下のユーザーとは何か。
自分のブログで設定しているユーザー名がドロップダウンリストから選べます。
その中から新しいユーザーを選択できます。

とても大事な事なので、慎重に行って下さい。
元のユーザーを削除する際にアサインができるので、必ず行って下さい。

詳しくはこちら。
http://hpbs.jp/support/admin.html


 自信がない方はプロに任せた方がいいかもしれません。
単純な作業なのですが、うっかり全記事削除してしまう可能性があります。

なにせ単純な作業で出来てしまうから恐いのです。
自分で行う場合は、事前にバックアップをとっておきましょう。

?author=1でアドレスバーにユーザーID表示


 ニックネームを設定し、
adminなど推測しやすいユーザー名から変更するのは、
以前から多くのブロガーが推奨していました。

それだけでは足りなかったようです。
むしろ、今からお伝えする方を先にやっておく(ブログ制作はじめに)
べきでした。
これからWordPressでブログを作る方はやっておくと良いですよ。


 WordPressで作ったブログ。
私ならこんなサイトがあります。

http://www.rabbitshimako.com/

このURL末尾に、?author=1 を追加すると、
私のユーザー名で作成したブログ一覧が見られます。
アーカイブページとして表示されます。
(上記私のブログでは対策済みで、もう見られません)

まぁこれは便利ですね。
色んな人とWordPressで共同でブログ作成している方は特に便利そう。

ちなみに

?author=1

の1はユーザー名毎に割り振られたID番号です。
ユーザーを複数作成すれば2、3、…と増えていきます。


 で、それは良いんですが、
いざ試しに ?author=1 を追加して見てみると、

http://www.rabbitshimako.com/author/自分のユーザーID(ログインに使うヤーツ)

というように、わざわざありがた迷惑にも、
ユーザーIDに置き換えてしまうんですね。

それをアドレスバーに表示してくれるではありませんか。


要らないんですけどこの機能orz


とはいえWordPressの仕様なので、どうしようもありません。
なので対策します。

私はもうこの ?author=1
を使ったアーカイブ一覧を見られなくしました。

共同ブログ運営などで、投稿者別アーカイブ一覧を使いたい方は困るかも。
どうすれば良いかは私は分からないのでググって下さい。

では、ユーザーIDがバレないように、
?author=1 問題を解決します。

ユーザーIDバレ対策!?author=1問題解消方法


 いくつか方法があります。
私は.htaccessに、
投稿者別アーカイブ一覧へアクセスできないコードを記入しました。

もうアクセス自体できなくしてしまうという方法です。
私はリダイレクト等、
だいたいの事を.htaccessに書き込むのが好きなので
この方法を選びました。

.htaccessカスタマイズは、
失敗するとサイト全部にアクセスできなくなる事もあります。
慎重に触って下さいね。


※追記2017/04/30
.htaccessで?author=1問題を解決しようとすると、
デメリットが発生しました。

WordPressダッシュボードから投稿データのエクスポートができなくなります。
バックアップのヤーツです。
詳しくはこちらで解説します。

よって、WordPressエクスポート機能を使いたい方は、
.htaccessにコードを記入するのは非推奨。

function.php方式を使うと解決します。
こちらをおすすめします。
また他のデメリットも発見したら追記します。

.htaccessで?author=1問題解消

※非推奨です。
function.php方式をオススメします。


(このままコピーしないで下さい。UTF-8Nに変換して下さい。)

# BEGIN block author scans
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} (author=\d+) [NC]
RewriteRule .* - [F,L]
# END block author scans

以上です。
参考にしたサイト
http://blog.z0i.net/2016/11/wp-author.html


 以下に、他のやり方も載せておきますね。

全部を行う必要はないと思います。
私は.htaccessだけ行いました。
色々組み合わせるとバグが起きる可能性もあるので。
あとは各々の判断でどうぞ。

.htaccessもそうですが、
どれも事前にバックアップをとっておき、
サイトが崩れても復元できるよう、準備して下さい。
あとは自己責任でお願いします。

function.phpで?author=1問題解消


 これも良いかもしれません。
function.phpも、失敗するとサイトが真っ白になります。
慎重にどうぞ。バックアップがあなたを救う。

(このままコピーしないで下さい。UTF-8Nに変換して下さい。)

/*
 * ?author=1対策
 */
// 投稿者アーカイブを空欄化
add_filter( 'author_rewrite_rules', '__return_empty_array' );
// URLを非表示化
function disable_author_archive() {
if ( $_GET['author'] || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ) {
wp_redirect( home_url( '/404.php' ) );
exit;
}
}
add_action('init', 'disable_author_archive');

以上です。
参考にしたサイト
https://ibgroup.co.jp/wordpress-security/

Edit Author Slugプラグインで?author=1問題解消


 プラグイン使いたい派の方はこちら。
https://ja.wordpress.org/plugins/edit-author-slug/

以上です。
参考にしたサイト
http://nlhacker.com/installing-and-configuring-the-edit-author-slug-plug-in.html

author.phpで?author=1問題解消


 テーマにphpファイルを追加して対応。
これが一番簡単で失敗が無さそうですが、
どうやら問題があるようです。

author.phpでリダイレクトさせても、
結局ユーザー名が分かってしまうという事態が起きたそうです。

こちら
http://mtssb.mt-systems.jp/blog/%E3%80%8Cauthorxx%E3%80%8D%E3%81%A7%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E5%90%8D%E3%81%8C%E5%88%86%E3%81%8B%E3%82%8B%EF%BC%9F%E7%A9%B4%E3%82%92%E5%A1%9E%E3%81%90%E3%81%AB%E3%81%AF/

以下は同じ方のブログで、以前の投稿です。
author.phpのコードも載っています。

http://mtssb.mt-systems.jp/blog/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E5%90%8D%E3%81%8C%E3%80%8Cauthorxx%E3%80%8D%E3%81%A7%E7%9F%A5%E3%82%89%E3%82%8C%E3%82%8B%E3%81%AE%E3%82%92%E9%98%B2%E3%81%90%E3%81%AB%E3%81%AF/

なので、author.phpはダメそうですね。

.htaccess方式ではエクスポートできないデメリット


 バグというか仕様の問題ですね。

WordPressの投稿や固定ページをエクスポートする機能がありますが、
これを使う為には、
投稿者別のアーカイブ一覧を参照する必要があるようです。

エラーページを見ると、author の文字が吐き出されていたので、
投稿者別アーカイブを読み取りに行っていると推測されます。

よく考えれば、バックアップするんだから、
投稿者別アーカイブもバックアップされるでしょうね。


 この投稿者別アーカイブ一覧を見れなくしてしまうコードを
.htaccessに記入していたらどうなるか。

当然、参照できないので、WordPressエクスポートが使えなくなりました。

実際、自分のブログURLに?author=1を足せば、
503ページが表示されて見られませんでしたからね。


 なので、WordPressエクスポート機能を使う方はこの方式はダメ。

エクスポート機能についてはほとんどの方が使うと思うので、
.htaccessにコードを記入するのは使えないということになるんじゃないでしょうか。


 例えばレンタルサーバーからWordPressをバックアップとるとか、
データベースは別の方式でバックアップとっているとか、
WordPressエクスポート機能を普段利用されない方は良いかもしれません。

?author=1問題によってログインIDが表示されるのは困るので、
そこへはもうアクセスすら出来なくなるというのは、非常に安心だし。

また、.htaccessに記入しておくと、
後でどんな指定をしているか分かりやすいですしね。

本当は.htaccess方式使いたいのですが、今回は止めました。
あとは各々の判断でどうぞ。


 ということで、私はfunction.php方式にしました。
こちらならWordPressエクスポート機能に影響ありませんでした。

ただ、function.phpでハックさせる事で、
また別のエラーやデメリットもあるかもしれません。

それこそ、WordPressエクスポートの内容にどう影響するかは検証していません。
エクスポートを使ってブログをリストアしたりしないと分からない…。

若干ドキドキしながら使っています。
といいつつ、私は他のカスタマイズ目的で、
function.phpを結構カスタマイズしているんですけどね。

エラーが不安な場合はやっぱりプラグインが安心かもしれません。
プラグインもエラー起こす事ありますけどねぇ(今回紹介しているプラグインについてではありません。一般的にプラグインが原因でサイトにエラーが発生することもあるよという話)

そんなわけで、あとは皆さんのお好みでカスタマイズして下さい。


まとめ!

 色んな対策の方法がありました。
とりあえず以上です。

私が試したのは.htaccessとfunction.phpです。
function.phpは今のところうまくいっています。

が、また抜け穴があって、
結局IDが分かる事態に陥った際は、新たに対策をします。


 WordPressの仕様の問題でどうしようもないのですが、
こういう抜け穴により、サイトへの不正アクセスというのは起きると思います。

サイト運営者は気をつけましょう。



 こちらのブログはBloggerです。
WordPressの実際の表示を確認したい方は
ラビットしま子の「人生美容パラダイス」をご覧下さい。


 当ブログの情報は全ての方に応用できるとは限りません。
ご利用は自己責任です。当ブログ側はいかなる責任も負いません。

必ずデータは最新のバックアップを取っておいて下さい。


 WordPressを利用される場合はUTF-8Nの文字コードに必ず変換して下さい。

当ブログのコードをコピーしてphpファイル等に直で貼付けすると
ファイルやデータが破損します。
パソコンのメモ帳は不可です。

詳細はWordPressヘルプを参照下さい。


 ラビットしま子はサイト制作のプロではありません。
個別のカスタマイズについての相談は乗ってあげたいけど、乗れません。
(わからんから)


スポンサードリンク