Wordpress:为什么订阅者可以看到管理面板?
Wordpress: Why can subscribers see the admin panel?
我的一个客户 运行 是一个使用 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;
}
}
以具有 "subscriber" 角色的用户身份登录后,current_user_can( 'administrator' ) returns false 如果我在网站的前端,它 returns true 如果我去 /wp-admin。
由于当前用户只是订阅者,我认为它应该 return 到处都是假的。
我对此有点困惑...而且我不知道接下来应该看什么。 (我尝试了一些常用的方法,比如禁用所有插件,但问题仍然存在)。你们知道我接下来应该尝试什么吗?
您的支票有误。你正在做 !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')
以所有非管理员(即编辑、投稿人等)为目标。
虽然整个情况很奇怪。通常,订阅者可以访问管理面板,但他们只能看到仪表板和他们的个人资料。如果他们真的能看到整个管理面板,你应该调查原因,因为它不正常。
P.S。您确定他们没有给您管理员帐户而不是订阅调查吗?
上述问题的原因是网站被黑客入侵。我在根文件夹中发现了一些不应该存在的文件。临时修复是删除 wp-admin 和 wp-includes 并从全新安装中复制文件夹。现在订阅者不能再查看管理面板,它会像它应该的那样重定向到前端。现在我必须扫描插件文件夹以查看是否找到其他任何东西。
我的一个客户 运行 是一个使用 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;
}
}
以具有 "subscriber" 角色的用户身份登录后,current_user_can( 'administrator' ) returns false 如果我在网站的前端,它 returns true 如果我去 /wp-admin。
由于当前用户只是订阅者,我认为它应该 return 到处都是假的。
我对此有点困惑...而且我不知道接下来应该看什么。 (我尝试了一些常用的方法,比如禁用所有插件,但问题仍然存在)。你们知道我接下来应该尝试什么吗?
您的支票有误。你正在做 !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')
以所有非管理员(即编辑、投稿人等)为目标。
虽然整个情况很奇怪。通常,订阅者可以访问管理面板,但他们只能看到仪表板和他们的个人资料。如果他们真的能看到整个管理面板,你应该调查原因,因为它不正常。
P.S。您确定他们没有给您管理员帐户而不是订阅调查吗?
上述问题的原因是网站被黑客入侵。我在根文件夹中发现了一些不应该存在的文件。临时修复是删除 wp-admin 和 wp-includes 并从全新安装中复制文件夹。现在订阅者不能再查看管理面板,它会像它应该的那样重定向到前端。现在我必须扫描插件文件夹以查看是否找到其他任何东西。