【问题标题】:Wordpress: Why can subscribers see the admin panel?Wordpress:为什么订阅者可以看到管理面板?
【发布时间】:2018-02-02 17:51:56
【问题描述】:

我的一个客户正在使用 Woocommerce 运行一个 wordpress 网站。我最近被要求以他们的用户之一登录,以便复制问题。

我发现我可以输入 /wp-admin ,它只会带我进入完整的管理面板,并且我拥有与管理员相同的所有菜单项。这显然非常严重,因为如果任何用户发现了这一点,他们可以根据需要关闭网站。

为了阻止它们,我在 functions.php 文件中放置了以下脚本:

//  Redirect non-admins away from wp-admin
add_action( 'init', 'blockusers_init' );

function blockusers_init() {
    $current_user = wp_get_current_user();

    if ( is_admin() && ! current_user_can( 'administrator' ) && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
        wp_redirect( home_url() );
        exit;
    }
}

以具有“订阅者”角色的用户身份登录后,如果我在网站的前端,current_user_can('administrator') 返回 false ,如果我转到 /wp-admin,它会返回 true

由于当前用户只是一个订阅者,我认为它应该在任何地方都返回 false。

我对此有点坚持......我不知道接下来应该看什么。 (我尝试了通常的方法,例如禁用所有插件,但问题仍然存在)。你们知道我接下来应该尝试什么吗?

【问题讨论】:

  • 您是否点击了管理面板并检查了它实际上是管理面板而不是个人用户设置管理面板?
  • 您是否检查了常规设置中的“新用户默认角色”选项?

标签: wordpress role


【解决方案1】:

您的支票不正确。你在做!wp_admin()。当您不在在管理面板中时确实如此,这与您想要的完全相反。

add_action('init', 'blockusers_init');

function blockusers_init()
{
    if (is_admin() && !current_user_can('administrator') && !( defined('DOING_AJAX') && DOING_AJAX ))
    {
        wp_redirect(home_url());
        exit;
    }
}

请注意,它可以是 current_user_can('subscriber') 仅针对订阅者,也可以是 !current_user_can('administrator') 以针对所有非管理员,即编辑、贡献者等。

不过,整个情况很奇怪。通常,订阅者可以访问管理面板,但他们只能看到仪表板和他们的个人资料。如果他们实际上可以看到整个管理面板,您应该调查原因,因为它是异常的。
附言您确定他们没有给您管理员帐户而不是订阅调查吗?

【讨论】:

  • 嗨,是的,你是绝对正确的。 `! ` 是错误的。我的代码中实际上并没有它。我确定该用户是订阅者,并且我创建了另一个用户以便进行测试,结果是相同的:所有用户都可以访问所有管理菜单项。是的,整个情况很奇怪。关于可能导致这种奇怪行为的任何建议?
  • @user3015234 没有明确的建议,因为我不知道他们使用什么样的插件和主题。但我想一个好的开始是一个一个禁用插件,看看它是否改变了什么,然后改变主题。如果它有帮助,您至少会知道在哪里进一步寻找。另外,检查设置中的默认新角色是否是订阅者而不是其他角色。
【解决方案2】:

上述问题的原因是网站中的黑客攻击。我在根文件夹中发现了一些不应该存在的文件。临时修复是删除 wp-admin 和 wp-includes 并从新安装中复制文件夹。现在订阅者不能再查看管理面板,它会像它应该的那样重定向到前端。现在我必须扫描 plugins 文件夹以查看是否找到其他任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    相关资源
    最近更新 更多