目录
前言
WordPress的/wp-json/wp/v2/users
是REST API的用户信息,可显示站点管理员的用户名(见下图),为了安全起见,隐藏或限制REST API的访问,以防止被获取管理员用户名。

解决方法
一、WordPress后台 > 外观 > 主题文件编辑器 > 点击模板函数
> 将代码(按网站用户数选择代码)粘贴到模板函数
文件中 > 最后更新文件
代码一(适合单用户网站)
//禁止游客访问REST API的用户信息
add_filter('rest_authentication_errors', function($result) {
if (!empty($result)) {
return $result;
}
if (!is_user_logged_in()) {
return new WP_Error('rest_not_logged_in', 'You are not currently logged in.', array('status' => 401));
}
return $result;
});
代码二(适合多用户网站)
//只限管理员访问REST API的用户信息
function restrict_rest_api_users_to_admin( $response, $handler, $request ) {
if ( ! current_user_can( 'administrator' ) ) {
return new WP_Error( 'rest_forbidden', __( 'You cannot view this resource.' ), array( 'status' => rest_authorization_required_code() ) );
}
return $response;
}
add_filter( 'rest_pre_dispatch', 'restrict_rest_api_users_to_admin', 10, 3 );
代码三(主题功能依赖REST API,只隐藏用户名)
//只隐藏REST API用户信息的管理员用户名
function hide_user_slug_and_link_in_rest_api( $response, $user, $request ) {
if ( isset( $response->data['slug'] ) ) {
unset( $response->data['slug'] );
}
if ( isset( $response->data['link'] ) ) {
unset( $response->data['link'] );
}
return $response;
}
add_filter( 'rest_prepare_user', 'hide_user_slug_and_link_in_rest_api', 10, 3 );

二、游客身份访问REST API的用户信息显示如下图。

可以,好东西,试试
我在子比官方论坛看到有个用户发帖说网安说他的网站存在泄露用户信息“漏洞”,我在你和青禾的网站试了下,都能看到用户名
是的,我也试了确实可以,不过我还隐藏了网站后台管理地址,双重保护了