最近、もう一つブログを開設し、.htaccessの中身について気になるところがあったので調べていた所、気になる記事がありました。
どうやら、ワードプレスの最初の設定のままだと、WordPressへのログイン時の名前(ユーザー名)が分かる人にはバレてしまうとのこと。
というわけで、その対策のための設定方法をメモしておきたいと思います。
え?
どゆこと??
WordPress での「?author=1」から ユーザー名 が分からないようにする
「それ、気になってたんだ」という人向けに、まずは結論です。説明は後ほど。
サーバーとしてネットオウルを使ってる人向けです。(関連会社のエックスサーバーでも多分大丈夫かと思います。)
てっとり早く教えてー
ちょっと!
チョットchotto!
何の話???
.htaccessを開いて以下を追記してください。「# WordPress author表示禁止」の部分は単なるコメントです。そのままコピペで大丈夫と思います。
# WordPress author表示禁止
RewriteEngine On
RewriteRule ^\?author=(.*)? / [R=302,L]
RewriteRule ^author/(.*)? / [R=302,L]
ちなみにwindowsだと 上記をコピペすると ^\?author
のバックスラッシュが 「円マーク」になると思いますが問題ないようです。 スターサーバーのファイルマネージャーから.htaccessにコピペすると自動で「円マーク」に変わり、そのまま保存しても普通に動きました。
富士通の以下のページを見ると
バックスラッシュと円マークは同様の機能を持ちます。
とあります。
追記の具体例
私の場合は、次のように記載すると上手く動きました。先程のコードの配置場所に注目してください。#BEGIN WordPress ~ #END WordPressの前に配置しています。(仕組みはよく分かりません。)
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# WordPress author表示禁止
RewriteEngine On
RewriteRule ^\?author=(.*)? / [R=302,L]
RewriteRule ^author/(.*)? / [R=302,L]
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
これでOKのハズです。
うまくいかなかった具体例
コードの配置場所に注目してください。#BEGIN WordPress ~ #END WordPressの後に配置しています。
最初は、以下のように後ろの方に追記したのですが、上手く動きませんでした。SSL化の部分は普通に動いていたと思います。
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# WordPress author表示禁止
RewriteEngine On
RewriteRule ^\?author=(.*)? / [R=302,L]
RewriteRule ^author/(.*)? / [R=302,L]
なので、先ほど紹介したように、#BEGIN WordPress ~ #END WordPressの前に持っていくと上手く動きました。
上で説明した設定をしていない場合どうなるのか?
記事を投稿したりする場合は以下の画面で「ユーザー名 or メアド」「パスワード」を入れてログインすると思います。
前の項目で説明した設定をしていない場合、このWordPressにログインする際の「ユーザー名」が知られる可能性があります。
え?別にいいんじゃないの?
パスワードかけてるんだし。
ネットで簡単に検索したみたところ、ブルートフォースアタック(総当たり攻撃)というのをされて、他者にログインされてしまう可能性があるようです。
つまり、誰かが「パスワードを試しに入れてみて、ログインできるかを確認する」作業をパソコンを使って自動で行うことでパスワードを知ることになり、ブログを乗っ取られてしまう可能性があるということになります。
ユーザー名が分からなければ、不正ログインされる難易度は高くなると思いますが、ユーザー名がバレてしまっていると、あとはパスワードを調べればいいだけ、という状態になるので危険だと思います。
そして、管理者のユーザーでログインされて、パスワードも変更されてしまえは、ブログが盗まれたことになってしまいます。
。。。。。それはマズイ
記事がたくさんあった場合、これまでの苦労が水の泡です。
(WordPressへのログイン画面のURLも可能であれば変更したほうがよさそうですが、そちらは今は触れません。)
パスワード管理はパソコンで? スマホで? 紙にメモ?
紙にメモ派の方向けアマゾンで簡単に検索してみたので以下に紹介します。
A5タイプのルースリーフタイプの手帳
さらに小さいルースリーフタイプのバインダ
そもそもどうやってユーザー名がばれてしまうの?
例えば、あなたがwordpress.com
というドメインのブログをWordPressで作ったとします。
wordpress.comとしているのは単なる例えです。あなたが作った実際のドメインに当てはめて考えてみてください。
ブラウザであなたのブログを表示し、ドメイン名のあとに?author=1
と続けて入力してみてください。
wordpress.com/?author=1
を入力してエンターを押すとどうなるでしょうか?
wordpress.comとしているのは単なる例えです。
以下のように「ユーザー名」がバレてしまっていないでしょうか?
「投稿者」の部分は「ニックネーム」になっているかもしれませんが、アドレスのところはユーザー名になっていないでしょうか?
wordpress.com/author/ユーザー名
という形で表示されていないでしょうか?
wordpress.comは(以下同文)
これでバレてしまうようです。
これを知って、速攻で対策しました。
マズイマズイ…
追記コードのそれぞれの意味は?
というわけで、最初に示したように以下のコードを追記しましたが、それぞれの意味は何なのでしょうか?
# WordPress author表示禁止
RewriteEngine On
RewriteRule ^\?author=(.*)? / [R=302,L]
RewriteRule ^author/(.*)? / [R=302,L]
細かい部分は省きますが、以下に簡単に説明します。
RewriteRule ^\?author=(.*)? / [R=302,L]
について
wordpress.com/?author=1
とブラウザで入力されても、トップページを表示する設定のようです。
問い合わせると名前を返す のを止めるような設定だと思います。
設定前 BEFORE
あなたの名前はなんですか?
○○です。
【 相手に簡単に知られる 】
設定後 AFTER
あなたの名前はなんですか?
トップページを表示します
【 相手に知られない 】
RewriteRule ^author/(.*)? / [R=302,L]
について
wordpress.com/author/ユーザー名
でも表示されないようにする設定のようです。
例えばユーザー名としてadmin
を使っているとして、悪意のある人が 「もしかしてadmin
で登録してるかな? 試しに入力してみよう」と思い立って、wordpress.com/author/admin
をブラウザのアドレスバーに入力すると、結局表示されてしまいます。それで、「あ、ユーザー名はadmin
だ」と確認されてしまいます。
この設定は「ユーザー名これで合ってるかな?」それを防いで、wordpress.com/author/○○○○
という入力がされてもトップページを表示させる設定になっています。
設定前 BEFORE
あなたの名前は「○○○○」でしたか?
いいえ違います。
もしくは
はいそうです。
【 相手に知られる可能性がある 】
設定後 AFTER
あなたの名前は「○○○○」でしたか?
トップページを表示します
【 相手に知られない 】
これは、設定しておいたほうが良さそうだ。
家の防犯も
オレオレ詐欺も注意せねば