WordPressにはユーザー名またはメールアドレスでログインできます。
ですが、ユーザー名は簡単に推測することができ、セキュリティとしては微妙です。
そこでユーザー名のログインを禁止して、メールアドレスのみに改造しましょう。
◆ 安全にfunctions.phpをカスタマイズする方法
functions.phpの修正に不安がある人は以下を参考にしてください。
functions.phpを直接修正するのは不具合時の対処やテーマ更新時に大変ですよね。それでも手間を減らす方法もあり、ここで紹介する方法と以下の記事の内容でそこそこ安全に改造できます。拡張用のfunctions.phpを新規作成する最初にカスタマイズ用のコードを記述するためのphpファイルを作成します。配置するディレクトリとファイル名は好みで大丈夫です。とりあえず、ここではfunctions.phpと同じディレクトリにextend-functions.phpとして作成し...
コードを追加する
functions.phpとかに以下のコードを追加します。
// ユーザー名のログインを禁止
add_filter( 'authenticate', function( $user, $username, $password ) {
$user_data = get_user_by( 'email', $username );
if( ! empty( $user_data ) ) {
return wp_authenticate_username_password( null, $user_data->user_login, $password );
}
return wp_authenticate_username_password( null, '___', $password );
}, 20, 3 );
仕組み
入力された情報をメールアドレスとしてget_user_byで検索します。
ユーザー情報が存在すれば普通にログイン処理、見つからない場合は適当なユーザー名でログイン処理をします。
適当なメールアドレスの場合、結果的にログインは成功しないので、ユーザー名のログインは不可能になります。
あとがき
セキュリティを考えたらユーザー名のログインは不要では?
ユーザー名が表示されてるサイトは無効化したほうが安全だよ。
この記事は参考になりましたか?
コメント