WordPress

第7回WordPressの脆弱性を考えよう(ユーザー認証)

  1. WordPressを設置してみよう
  2. テーマを変更してみましょう
  3. テーマを自作してみましょう
  4. オリジナルのテーマを作る(レスポンシブデザイン編)
  5. WordPressの脆弱性を考えよう(ユーザーネーム)
  6. 第6回WordPressの脆弱性を考えよう(IP制限)

ビジネスマン

今回も脆弱性対応の続きです。
IP制限のできない場合、もしくは併用してユーザー認証をかけます。
というかユーザー認証はほぼ必須の処置ですね。
アクセスする時にユーザー名とパスワードの入力を求めるアレです。入力されたユーザー名とパスワードが、セットされたものと一致すればアクセスを許可、一致しなければ拒否します。

特にWordPressにIP制限をかけない場合は、ユーザー認証が重要になります。

ユーザー認証にはいくつか種類があります。

・ベーシック認証
最もポピュラーなユーザー認証です。
認証が使われているページにアクセスしようとすると、ユーザー名とパスワードの入力させるダイアログが表示されるものです。
何度か出てきた.htaccessのファイルとパスワードファイルを組み合わせて使います。
しかしただのテキストファイルのため、サーバへの通信は暗号化されないので万全ではなく、通信を傍受されればユーザー名やパスワードを覗かれてしまいます。
この方式の認証はhtaccessのあるディレクトリ以下のすべての領域に影響するため、ルートディレクトリに置くとサイトそのものにユーザー認証がかかり、普通のユーザーも見れなくなります。
じゃあどうすればいいかと言うと答えは簡単で、ダッシュボードの入っているwp-adminにhtaccessを置けばよい事になります。

・データベース認証
ベーシック認証がテキストファイルだったのに対し、ユーザーの管理をデータベースで行う方式をデータベース認証と呼びます。
利点としては、大きく分けて

1・テキストじゃないので堅牢
2・FTPクライアントを使ってアクセスしなくても外部からユーザー名/パスワードを制御できる

の2点です。
ただし、Apacheの設定ファイルに触るので、最初に設定する時はサーバの再起動が必要なため一般的なホスティングサーバでは使いにくいです。

どちらの方式にも言える事ですが、ユーザー名とパスワードの組み合わせで本人確認をするため、ユーザー名とパスワードが漏れたら無意味です。

結局アナログになってしまいますが、ユーザー名とパスワードはわかりにくいものを使いのが一番かなと思います。

・トークン認証
WordPressでは実装されていませんが、データベース認証にワンタイムパスワードを組み合わせた亜流がこちら。
ネット銀行などで取り入れている事が多いです。
例えば楽天銀行では設定されたメールアドレスにワンタイムパスワードを送り、それを入力させる事でメールアカウントへの認証をしないと送金ができません。
ここでワンタイムパスワードはメールで来ますが、ジャパンネット銀行やゆうちょ銀行ではワンタイムパスワード生成器としてのトークンを物理的に送付しておき、生成されるワンタイムパスワードを求める認証をします。

この先、WordPress(に限らずオープンソースのCMS)が大規模サイトで採用されるとすると、よりセキュリティを重視するならば、IP制限などのWordPressの利便性を投げ捨てるようなセキュリティよりも、ログインにトークンを使用するような機能拡張も出てくるんじゃないかなあ?などと個人的には思っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です