wp-adminにログイン失敗時のメッセージを見ると、ユーザーが存在するかどうかがわかってしまうメッセージになってます。
-
パスワードが間違っている場合
エラー:ユーザー名 hogehoge のパスワードが間違っています。
-
ユーザー名が存在しない場合
エラー:ユーザー名が無効です。
これは、「安全なウェブサイトの作り方」にある2.5 (3)入力後の応答メッセージが認証情報の推測のヒントとならない工夫をするに沿っていません。そこで、メッセージを変更してみました。
function.php
function change_login_error_message( $error_message ){
$changed_message = "<strong>エラー</strong>: ログインできません";
if ( preg_match("/ユーザー名が無効です。| のパスワードが間違っています/", $error_message ) ){
$error_message = $changed_message ;
}
return $error_message ;
}
add_filter('login_errors', 'change_login_error_message');
login_errors
フィルタを使って変更しています。正規表現で該当のメッセージのみ変更し、それ以外はそのまま表示しています。
ただし、パスワードリマインダーでも、ユーザー名が存在しているかどうかわかってしまうので、こちらの処理も変更しないといけないようです。