wordpress:ユーザー名の付け方だけでログインのセキュリティをアップさせる
wordpressのユーザー名はバレる
wordpressはユーザー名でログインします。
セキュリティのために「admin」はやめろ!とか色々有りますが、どうやったってバレます。
それはauthorページのURLにそのユーザー名が使用されているからです。
- ユーザー名:securavita
- authorページ:http://example.com/author/securavita/
これをどうにかできれば…しかも追加機能とかなしで…
ユーザー名には半角スペースが使えます
ユーザー名には英数字の他ハイフンやアンダーバーなど使えますが、それ以外にも半角スペースが使用できます。
この半角スペースがキモ!
半角スペースはURLエンコードされます。
半角スペースをURLに組み込んだ場合はURLエンコードされたものになります。
例としてユーザー名を「secura vita」と付けた場合
secura vita
↓
secura%20vita
つまり
http://example.com/author/secura vita/
にアクセスしても
http://example.com/author/secura%20vita/
という風に変更され404ページになります。
その名前のユーザは存在しないという扱いになるのでauthorページでユーザー名がわからないようになりました。
じゃあauthorページはどうなるの?
上記の様にユーザー名をつけた場合のauthorページは、そのユーザーIDで確認できます。
http://example.com/?author=ユーザーID
ユーザーIDは管理画面のユーザーページのURLで確認できます。
アクセスするとこうなってるはず。
http://example.com/author/secura-vita/
データベースを見るとわかるのですが、ユーザー用テーブルには「user_login」と「user_nicename」という2つのフィールドがあり、user_nicenameにはuser_loginが変換されたものが入ります。
そのどちらでもアクセスできるようになっている(ユーザー名でアクセスした時は指定文字を変換してuser_nicenameで呼び出してるのかな?)のですが半角スペースはURLエンコードされ「%20」という文字列になるため該当ユーザーなし(そもそも%はユーザー名には使用できない文字)と判断され、結果的に404が返ってくるというわけです。
- user_login:secura vita
- user_nicename:secura-vita
大事なことは…
このuser_nicenameではログインできません。
最低1文字半角スペース、できれば記号も織り交ぜて
半角スペースの他にハイフン、@(アットマーク)、.ピリオドを併用することでもっとわかりにくくすることができます。
secura vita@web.blog-user
↓
secura-vitaweb-blog-user
こりゃわからないですよね!
使用する箇所を増やせば増やすほど強力になります。
半角スペースを使わない場合でも記号を使うだけで通常よりも強力にはなりますし、?author=ユーザーIDで返ってくるアドレスはuser_nicenameになりますので通常であればユーザー名を見ることはできません。
ただこの場合URL直打ち「http://example.com/author/ユーザー名」でページが表示されますのでページ自体は存在することになります。
ですので、なるべく半角スペースを混ぜるのがいいと思います。
表示名は必ず変更すること
あともう少しです。
これまでの設定でURLからユーザー名を判別できなくしましたが、バレる箇所は他にも有ります。
- 投稿記事ページの投稿者
- RSSの「creator」
この部分は「ブログの表示名」が出力されますので必ず変更しておいてください。
名・姓を入力せずに登録した場合はユーザー名がそのまま入っています。
変更後
- 投稿記事ページの投稿者
- RSSの「creator」
これで完了!
これで一通り完了です。
今回使用したwordpressのバージョンは4.3です。めっちゃ古いバージョンだとユーザー名に記号が使えなかったりするかも?
もしそうならセキュリティのためにもバージョンアップしてください。
もしよろしければユーザー名を変更する機能(プラグイン)を作ってみたので試してみてください!