wordpressのログインページURLを変更する【プラグイン不要】

前サイトを無防備に晒していたところ、
まんまとスパムアタックを毎日100回程受け、
1ヶ月後には海外へのリダイレクトを大量に埋め込まれる被害にあいました。
そんな被害に合う前にあなたにはログインページのURLを変えてほしいのです。

かわいそうなサイト内検索結果

wordpressは誰でも容易に触れる反面スパムアタックも受けやすい

wordpressの管理画面へのログインは何も設定しないと

  • {サイトドメイン}/wp-admin
  • {サイトドメイン}/wp-login.php

のいずれかで入り口にたどり着けてしまいます。
また、ユーザーIDに関しても、
{サイトドメイン}/wp-json/wp/v2/users/1
のJSON形式で手に入れる事が出来てしまったり‥。
ここまでくるとパスワードのアタックをすれば良いだけなので、
スパムアタックとの時間との勝負になってしまうのです。

どうしてプラグインを使わないの?

プラグインを使用すればコードに一切触れることなく便利ではあるのですが、
プラグインを使用すればするほど重くなります。
1つのwordpressサイトに5個も入れればもういっぱいだと思って良いと思います。
今回は貴重なプラグインの枠を使用せずに、、コピペで済ませる方法をご紹介します。

wordpressが入ってるフォルダにファイルを作成する

  • wordpressが入っているフォルダ直下(wp-config.php等が入っているフォルダ)にログインURLにしたい文字列.phpでファイルを作成
    ※仮にnew-loginurl.phpとします
  • 以下コードを記述
<?php
 define('MY_LOGIN', password_hash('newlogin', PASSWORD_DEFAULT));
 require_once './wp-login.php';
?>

function.phpの編集

  • wp-content/themes/使用テーマ名 の中に入っているfunctions.phpに以下のコードを追記します
// ログインURLを変更
// 定数を定義
define('MY_LOGIN_PAGE', 'new-loginurl.php');
 
// 新しいログインURL以外はトップページにリダイレクトさせる
if(!function_exists('login_redirect_home_url')){
   function login_redirect_home_url(){
       if(defined('MY_LOGIN') === false || password_verify('newlogin', MY_LOGIN === false)){
       wp_safe_redirect(esc_url(home_url()));
       exit;
       }
   }
}
add_action('login_init', 'login_redirect_home_url');
 
// ログイン済み or 新しいログインURLは、「wp-login.php」のリンクを新しいログインURLに置き換える
if(!function_exists('login_replace_new_url')){
   function login_replace_new_url($path, $scheme){
       if(strpos($path, 'wp-login.php') && (is_user_logged_in() || strpos($_SERVER['REQUEST_URI'], MY_LOGIN_PAGE) !== false)){
       $path = str_replace('wp-login.php', MY_LOGIN_PAGE, $path);
       }
       return $path;
   }
}
add_filter('site_url', 'login_replace_new_url', 10, 2);
  • 3行目のnew-loginurl.phpを作成したファイル名と揃える
  • 2つのファイルをアップロード

ドメイン名/new-loginurl.phpにアクセスし、確認

まとめ

この設定をするだけでかなりログイン試行を防ぐ事が出来ます。
ベーシック認証等も出来ればつけたいところですが、取り急ぎログインURLの変更は絶対やるべきかと。以上

コメントを残す

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