web-dev-qa-db-ja.com

Wp-adminログインページを別の場所に移動する方法

それはセキュリティのもう一つの層になることができます..

1
user931

Login_headにフックすることであなたの関数からwp-loginページを無効にすることができます。

add_action( 'login_head', 'wp_die');

(これは明らかに非常にぎこちないやり方ですが、だれかがそのページからログインできないようにします。ただのダイではなく、リダイレクト機能や警告メッセージを作成することもできます。)

そして、既存のwp-loginファイルを別の場所にコピーして、一番上の近くのwp-load.phpへの相対パス(およびそれ自体へのリンクとフォームアクションを含む他の相対パス)を必ず更新してください。

(もちろん、ここでlogin_headに追加したアクションを削除する必要があります。そうしないと、このページからログインできなくなります。)

それから、あなたは新しいログインページのアドレスを返すフィルタをlogin_urlに追加する必要があるだけでなければ、そうでなければwp-adminファイルを要求している人々は古いログインページにリダイレクトされるでしょう。

4
goldenapples

Wp-loginまたはwp-adminページ自体はセキュリティ上の脅威を引き起こさないため、これはセキュリティ上の大きな考えではありません。だれかがあなたのパスワード/ユーザ名を持っていると彼らはどこにログインするべきかを見つけることができないかもしれない、それ故にあいまいさによる安全性を主張することができます。

Kronusがあなたがたぶん気の利いたリダイレクトにすることができると言ったように、それが将来のリリースでどれほどうまくスケールアップするか、あるいはそれがトラブルに見合う価値があるかどうかわからない。

私はあなたのログインのためのいくつかの良いアイデアを提案するでしょう。

Login/admin(htpps)に対してsslを有効にします。

.htaccessを使用してページをパスワードで保護します(したがって、二重ログインになります)。

ログイン失敗回数制限などのプラグインを使用します。これはログイン失敗後にユーザーをロックアウトします。

4
Wyck

これらの答えのどれも特に役に立ちませんでした。私はOPの動機に疑問を呈しますが、ここにそれを行う方法があります。これを自分のfunctions.phpに追加してください。ただし、 "$ login_page_id"は必ず置き換えてください。

// This will redirect the actual login page to your new page
add_action( 'login_redirect', 'custom_login_redirect' );
function custom_login_redirect()
{
    if ( 'wp-login.php' == $GLOBALS['pagenow'] )
    {
        // Set your $login_page_id
        wp_redirect( get_permalink($login_page_id) );
        die;
    }
}

// This will replace the login url used by Wordpress
add_filter( 'login_url', 'custom_login_url', 10, 2 );
public function custom_login_url( $login_url='', $redirect='' )
{
    // Set your $login_page_id
    return get_permalink($login_page_id);
}

あなたの新しいログインページで、あなたは単にログインフォームを表示するためにこの関数を追加することができます:

<?php wp_login_form(); ?>

http://codex.wordpress.org/Function_Reference/wp_login_form

4
Jake

私はここに挙げた答えの大部分に憤慨しています。 OPは有効な質問を投稿し、与えられた回答のほとんどは、この問題に対するWordpressの制限を回避する方法がないという事実を回避するためのものでした。

OP、この問題に関してあなたができる最も良いことはIPフィルタリングであり、WP-Admin領域へのログインを許可されているネットワークのみを許可します(例えばあなたのオフィスのIPアドレス、開発者のIPアドレスなど)。とにかくスターバックスであなたの仕事をしてはいけません。これが企業ネットワークのやり方なので、あなたも同じことをするかもしれません。

## .htaccess inside the wp-admin folder
order deny,allow
deny from all
allow from xxx.xxx.xxx
allow from xxx.xxx.xxx
allow from xxx.xxx.xxx
2

/login/書き換えルールのみを使用して、Wordpressログインを/wp-admin//wp-login.phpまたは/cmsから.htaccessに移動するための解決策を思いつきました。

プラグインは不要です。

これをプロジェクトのルートの.htaccessファイルに貼り付けます。

<IfModule mod_rewrite.c>
      # Move login to /cms.
      RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$
      RewriteCond %{HTTP_REFERER} !/cms(.*)$
      RewriteCond %{REQUEST_METHOD} POST
      RewriteRule ^(.*) ./cms?message=wrong_login_path [R=302,L]
      RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$
      RewriteCond %{QUERY_STRING} !^cms=unlocked
      RewriteCond %{REQUEST_METHOD} !POST
      RewriteRule ^(.*) ./cms?message=redirect_to_custom_login_path [R=302,L]
      RewriteRule ^cms wp-login.php?cms=unlocked [L]
</IfModule>

乾杯!

更新: /いくつかのルールを改善しましたので/wp-login.phpへのPOSTリクエストでも403 forbidden errorをトリガーします。これは、ブルートフォース方式を使用してダッシュボードにログインしようとしているボットに対して役立ちます。これらの規則に何か改善があれば、この投稿にコメントしてください。

2
Floris

サブディレクトリに新しいログインページを作成するだけです。既存のwp-loginページをあなたのウェブルートの新しいディレクトリ(たぶん "/ login")にコピーし、それをindex.phpに改名し、WordPressブートストラップをページの一番上に追加し、そしてあなたがそれを好きなようにする).

ログインページのデフォルトコードを少し調整する必要があります。ほとんどの場合、ハードコードされたリンクを検索/置換して "wp-login.php"にリダイレクトします。しかし、すべてのフックとフィルタをそのままにしておけば、この方法ではプラグインの統合が混乱することはありません。 WordPressのコアアップデートは、wp-loginページ自体への変更が含まれていない限り、問題ありません(マイナーバージョンではめったに起こりません)。

この方法でユーザーアカウントページを作成することもできます(私はそれらを "/ profile"ディレクトリに置きます)。それが済んだら、加入者レベルのユーザはwp-adminに入る必要がないはずなので、htaccessファイルでそれを保護することができます。これは実際にあなたが探していた付加的なセキュリティをあなたに与える部分です。フロントエンドで使用されているプラ​​グインもあるので、admin-ajaxファイルのためにあなたのhtaccesで例外を作るようにしてください。

プラグインのみの解決策を見つけようとしていないのは確かです。しかし、もしそうなら、私たちに知らせてください!

2
MathSmath

この質問が出てきた5年間、誰も中心的な問題に取り組んでいませんでした:セキュリティは、自動ボットを追い払ってログをクリーンに保つvalidテクニックです。wp-adminの移動/非表示の目標は、ボットに対してWordPressサイトではないnotであるように見せることです。

wp-adminを非表示にする(移動はしない)方法は、ボットがそのURLにアクセスしようとしたときに標準の404ページを提示することです。自宅のIPアドレスからのみアクセスすると、wp-adminページが適切に返されます。 このメソッドはwp-adminが存在しないかのように攻撃者/ボットに見えますが、wp-adminパスをハードコードするコアWPコードまたはプラグインを壊しません。この.htaccessコードは証書:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteRule ^/?wp-admin - [R=404,L]

もちろん、コードを使用するときは、12.34.56.78独自のIPアドレス に置き換えてください。 IPアドレスは正規表現として解釈されるため、.文字をエスケープすることを忘れないでください。

1
dotancohen

あなたは.htaccessを編集してあなたの都合の良い別のパスへのリダイレクトを実行することができます。

1
konus

このプラグインを使うことができます:

http://wordpress.org/extend/plugins/wp-login/ /

あなたはただページを作成し、ログインがどこにあるかをプラグインに伝えることができます。しかし基本的にはwp-login.phpをあなたの "page"にリダイレクトするだけです。そのため、wp-login.phpを検索しているボットは、単にあなたの "ページ"にリダイレクトされます。

ボットからあなたのログインページを保護するために、あなたはクッキーと.htaccessの組み合わせを使うべきです。ほとんどのボットはクッキーを使わないからです。このようなもの:

RewriteCond %{HTTP_COOKIE} !^PHPSESSID=\w+ [OR]
RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?example\.com/ [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^wp-(comments-post|login|register)\.php http://example\.com [R=301,L,NS]

上記の例では、PHP Session Cookieを使用しています。実装が最も簡単だからです。

1
MickeyRoush

ログアウトURLを(管理者で)変更するには、functions.phpを編集してください。

add_filter( 'logout_url', 'custom_logout_url');
function custom_logout_url( $login_url)
{
   $url = str_replace( 'wp-login', 'your_logout_file', $login_url );
   return $url;
}
0
Michal

この回答はdotancohenへの追加です。 dotancohenの答えはwp-login.phpを説明していません、あなたがWordPressをあいまいにしようとしているならあなたは考慮すべきです。

これがwp-adminwp-login.phpの両方にあなたがどのように404するかです:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteCond %{THE_REQUEST} \ /+wp-(admin|login)
0
Kurt Serge