- WordPressを設置してみよう
- テーマを変更してみましょう
- テーマを自作してみましょう
- オリジナルのテーマを作る(レスポンシブデザイン編)
- WordPressの脆弱性を考えよう(ユーザーネーム)
- 第6回WordPressの脆弱性を考えよう(IP制限)
今回も脆弱性対応の続きです。
IP制限のできない場合、もしくは併用してユーザー認証をかけます。
というかユーザー認証はほぼ必須の処置ですね。
アクセスする時にユーザー名とパスワードの入力を求めるアレです。入力されたユーザー名とパスワードが、セットされたものと一致すればアクセスを許可、一致しなければ拒否します。
特にWordPressにIP制限をかけない場合は、ユーザー認証が重要になります。
ユーザー認証にはいくつか種類があります。
・ベーシック認証
最もポピュラーなユーザー認証です。
認証が使われているページにアクセスしようとすると、ユーザー名とパスワードの入力させるダイアログが表示されるものです。
何度か出てきた.htaccessのファイルとパスワードファイルを組み合わせて使います。
しかしただのテキストファイルのため、サーバへの通信は暗号化されないので万全ではなく、通信を傍受されればユーザー名やパスワードを覗かれてしまいます。
この方式の認証はhtaccessのあるディレクトリ以下のすべての領域に影響するため、ルートディレクトリに置くとサイトそのものにユーザー認証がかかり、普通のユーザーも見れなくなります。
じゃあどうすればいいかと言うと答えは簡単で、ダッシュボードの入っているwp-adminにhtaccessを置けばよい事になります。
・データベース認証
ベーシック認証がテキストファイルだったのに対し、ユーザーの管理をデータベースで行う方式をデータベース認証と呼びます。
利点としては、大きく分けて
1・テキストじゃないので堅牢
2・FTPクライアントを使ってアクセスしなくても外部からユーザー名/パスワードを制御できる
の2点です。
ただし、Apacheの設定ファイルに触るので、最初に設定する時はサーバの再起動が必要なため一般的なホスティングサーバでは使いにくいです。
どちらの方式にも言える事ですが、ユーザー名とパスワードの組み合わせで本人確認をするため、ユーザー名とパスワードが漏れたら無意味です。
結局アナログになってしまいますが、ユーザー名とパスワードはわかりにくいものを使いのが一番かなと思います。
・トークン認証
WordPressでは実装されていませんが、データベース認証にワンタイムパスワードを組み合わせた亜流がこちら。
ネット銀行などで取り入れている事が多いです。
例えば楽天銀行では設定されたメールアドレスにワンタイムパスワードを送り、それを入力させる事でメールアカウントへの認証をしないと送金ができません。
ここでワンタイムパスワードはメールで来ますが、ジャパンネット銀行やゆうちょ銀行ではワンタイムパスワード生成器としてのトークンを物理的に送付しておき、生成されるワンタイムパスワードを求める認証をします。
この先、WordPress(に限らずオープンソースのCMS)が大規模サイトで採用されるとすると、よりセキュリティを重視するならば、IP制限などのWordPressの利便性を投げ捨てるようなセキュリティよりも、ログインにトークンを使用するような機能拡張も出てくるんじゃないかなあ?などと個人的には思っています。