旅インプットファイナンス時事ネタその他GRAYCODEについてお問い合わせプライバシーポリシーサイトポリシーBLOGfacebookTweethatenaline2015.10.15WordPressWordPress管理画面のログインURLを変更するWordPressは多くの場所で使われている非常に便利なCMSですが、共通ルールがセキュリティとして好ましくないこともあります。そこで今回は、共通ルールの1つである管理用ログイン画面のURLを独自のものにする方法を解説します。地味に見落としがちな、ログイン画面のURL管理画面にログインする際、いつもどのようなURLを使っていますか?URLが「http://example.jp」の場合、次のURLは全てログイン画面を開くことができます。http://example.jp/wp-login.phphttp://example.jp/wp-adminhttp://example.jp/loginhttp://example.jp/adminhttp://example.jp/dashboardログインしなければ管理画面を開くことはできませんが、ログイン画面が露出していること自体もリスクです。そのようなリスクを避けるため、今回は2つのファイルを使ってログイン画面のURLを独自のものに設定していきます。2つのファイルのうち1つは「wp-login.php」と同じ階層に新規作成し、もう1つはテーマ内の「functions.php」に追記します。解説の便宜上、新規作成するファイルを「graycode-login.php」、functions.phpがあるテーマのフォルダを「graycode」とします。設定をする際はご自身の環境に合わせて置き換えてください。設定するファイルgraycode-login.phpwp-content/themes/graycode/functions.phpログイン用ファイルの作成まずはログインの入り口となるファイルを作成します。このファイル名が独自のログインURLとなるので、推測しにくいファイル名にしてください。今回のように「graycode-login.php」としたら、ログインするためのURLはhttp://example.jp/graycode-login.phpとなります。このファイル名を「abcd.php」など別のものにとしたら、URLもhttp://example.jp/abcs.phpです。URLは必要に応じて置き換えてください。コードを入力していきましょう。'./wp-login.php';ここではこの3行だけ記述します。2行目のdefine関数ではハッシュ値を生成しています。この値は、きちんと「graycode-login.php」を通過してきているかを確認する際に使用します。ハッシュ値の生成で使っているpassword_hash関数は比較的新しい関数で、php5.5以降から使用可能です。phpのバージョンが5.4以前の場合、crypt関数など他のハッシュ生成関数を使ってください。PHPドキュメントWordPressの設定をする続いてfunctions.phpを編集し、先ほど作成したファイルを入り口となるように設定していきます。テーマ内のfunctions.phpを開き、次のコードを記述してください。記述箇所はファイル内の一番下などで大丈夫です。}}上の処理では、graycode-login.phpを通ってwp-login.phpLOGIN_KEY定数を使って判定しています。通っていない場合は404.phpへリダイレクトし終了です。こちらの設定で、wp-login.phpへの直接アクセスはできなくなりました。処理を詳しく見ていきましょう。2行目は「login_init」というwp-login.phpにアクセスした際に呼び出されるアクションに、admin_login_init関数の実行を追加します。内容は定数LOGIN_KEYが宣言されているか、そしてその定数の内容が正しいかのチェックです。password_verify関数は先ほどのpassword_hashと対をなす関数で、ハッシュ値の正当性の確認で使用します。こちらの関数もphp5.5以上からでないと使用できないため注意してください。先ほどのコードの下に、さらに次のコードを追加してください。$location;}1つ目の「add_filter」ではログイン状態でログイン画面へアクセスした場合の動作を、2つ目の「add_filter」ではログイン画面へのリダイレクトを制御しています。1つ目の「add_filter」の設定は、ログイン後に管理画面を表示するために行います。通常はログイン後にwp-login.phpへリダイレクトされますが、上記設定で直接のアクセスを制御しているため404.phpが表示されてしまいます。そこで、リダイレクトURLからwp-login.phpの指定をファイル名「graycode-login.php」に置き換えています。2つ目の設定は、ログアウトした後にログイン画面へ戻るために必要な処理です。ここでもwp-login.phpへの直接アクセスをしないように、URLからwp-login.phpを「graycode-login.php」へ置き換えています。以上で一通りの設定完了です。ログイン画面についてのリスクを軽減することができました。こちらの記事は役に立ちましたか?GoodBadありがとうございます。よろしければ、あわせてフィードバックや要望などをご入力ください。コメント送信コメントありがとうございます!運営の参考にさせていただきます。)PHP2019-11-16フォームの基本構造を作成するPHP2019-11-16はしご高など旧字体漢字の文字化けを防ぐRECOMMEND遅いインターネット評論家の宇野常寛の新著。2018年頃から提唱されている「インターネットによって失った未来をインターネットによって取り戻す」をテーマにした本書が、いよいよ2月20日から書店に並びます。宇野さんがずっと温めてきた構想が詰まった1冊なので、個人的に非常に楽しみにしている一冊です。