如何将wp-admin登录页面移动到其他位置?

时间:2011-02-23 作者:user931

我想物理地(而不是虚拟地)移动登录页。请建议一种插件方式来实现这一点,它可以动态地改变核心代码(即使在核心代码更新之后)。它可以是另一个安全层。

12 个回复
SO网友:goldenapples

您可以通过挂接login\\u head从功能中禁用wp登录页:

add_action( \'login_head\', \'wp_die\');
(这显然是一种非常笨拙的方式,但它会阻止任何人登录该页面。您可以将其设置为重定向功能或警告消息,而不仅仅是死亡。)

并将现有wp登录文件复制到另一个位置,确保将相对路径更新为wp-load.php 靠近顶部(以及可能在其中的任何其他相对路径,包括指向自身和表单操作的链接)。

(显然,您必须删除添加到的操作login_head 此处,否则您也无法从此页面登录。)

然后,您只需要向login_url 这将返回新登录页的地址,否则请求wp admin文件的用户将被重定向到旧登录页,而旧登录页现在已被禁用。

SO网友:Wyck

这不是一个好的安全想法,因为wp登录或wp管理页面本身不会构成安全威胁。虽然可以说,如果有人拥有你的密码/用户名,他们可能无法找到登录的位置,从而通过模糊性实现安全。

正如kronus所说,您可能会进行一些花哨的重新定向,不知道这将如何与未来的版本进行扩展,或者它是否值得麻烦,就个人而言,我认为这不值得,我非常重视安全性。

我会为您的登录提供一些更好的建议。

为登录/管理(htpps)启用ssl。

使用密码保护您的页面。htaccess(因此您将有一个双重登录)。

使用类似“限制登录尝试”的插件,它可以在登录失败后锁定用户。

SO网友:Jake

这些答案都不是特别有用。我怀疑这次行动的动机,但这里是如何做到这一点。将此添加到您的函数中。php,但请确保替换“$login\\u page\\u 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

SO网友:Jhourlad Estrella

哦,对于这件事,你能做的最好的事情就是IP过滤,只允许那些被允许登录到WP管理区域的网络(例如,你的办公室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

SO网友:dotancohen

在这个问题出现的五年里,没有人解决过核心问题:Security by obscurity is a valid technique to ward off automated bots and keep the logs clean. 移动/隐藏的目标wp-admin 在机器人看来,这不是WordPress站点。

我隐藏的方式(但不移动)wp-admin 是在机器人尝试访问该URL时向其显示标准404页面。只有从我的家庭IP地址进行访问才允许wp-admin 页面以正确返回。This method looks to an attacker/bot as if wp-admin does not exist, yet it does not break core WP code or plugins that hard-code the wp-admin path..htaccess 行为准则:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^12\\.34\\.56\\.78$
RewriteRule ^/?wp-admin - [R=404,L]
当然,当使用代码替换时12.34.56.78 具有your own IP address. 别忘了逃离. 作为IP地址的字符被解释为正则表达式。

SO网友:Floris

我想出了一个将Wordpress登录从/login/, /wp-admin//wp-login.php/cms 仅使用.htaccess 重写规则。

No plugin needed!

将此粘贴到。项目根目录的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>
干杯!

Update:我改进了一些规则POST 请求/wp登录。php将触发403 forbidden error. 这将有助于对付试图使用暴力方法登录仪表板的机器人。如果您对这些规则有任何改进,请随时发表评论。

SO网友:MathSmath

只需在子目录中构建新的登录页面。将现有wp登录页复制到webroot中的新目录(可能是“/登录”),将其重命名为索引。php,在页面顶部添加WordPress引导程序,并使用它做任何你喜欢的事情(主题化等)。

您必须稍微调整一下登录页面的默认代码,主要是查找/替换硬编码链接,并重定向到“wp login.php”。但只要您将所有挂钩和过滤器都保留在适当的位置,这种方法就不会破坏任何插件集成。WordPress核心更新也可以,除非更新包括对wp登录页面本身的更改(在小版本中很少发生)。

您也可以这样构建用户帐户页面(我将它们放在dir”/配置文件中)。一旦您这样做了,订阅者级别的用户就不需要进入wp admin,所以您可以使用htaccess文件来保护它。这部分实际上为您提供了所需的额外安全性。只需确保在htacces中为管理ajax文件创建一个例外,因为有些插件在前端使用它。

很肯定你不会找到一个只使用插件的解决方案。但如果你这样做了,请告诉我们!

SO网友:MickeyRoush

您可以使用此插件:

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

您只需创建一个页面并告诉插件登录的位置。但它基本上只是重定向wp登录。php到您的“页面”。所以任何搜索wp登录的机器人。php将被重定向到您的“页面”。

为了保护您的登录页面免受机器人程序的攻击,您应该结合使用cookie和。htaccess,因为大多数机器人不使用cookie。类似这样:

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会话Cookie,因为它最容易实现。

SO网友:Kurt Serge

这个答案是对dotancohen的补充,因为它是不完整的。dotancohen的回答不能解释wp-login.php, 如果你想模糊WordPress,你应该考虑这一点。

以下是您如何在两个wp-adminwp-login.php:

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

SO网友:konus

您可以尝试编辑.htaccess 并执行重定向到您方便的另一条路径。

SO网友:Michal

要修改注销URL(在admin中),请编辑您的函数。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;
}

SO网友:Sam

我通过删除我的三个博客并将限制登录的参数更改为可能的最大值,解决了这个问题。9999

对于一个208.91.199.94的人渣垃圾邮件发送者,他在过去两天内访问了我的登录页面750次,我正在努力以其他方式消除他。

结束

相关推荐

如何在WP-ADMIN的同一菜单部分创建多个帖子类型?

我正在我的网站的WordPress管理中创建一个自定义菜单部分(在左侧的主菜单部分中有一个子项的新项目)。该部分应包括一个主要的职位类型,为此,您应该能够链接类别和国家。可以使用分类法,但分类法只支持多种选择。因此,我希望能够为类别和国家创建新的帖子类型,而不是分类法。但如果我想把它放在同一个菜单区下,那就行不通了?请帮忙。