블로그 이전을 하면서 301 Redirects 플러그인을 설치하여 리디렉션을 설정했는데, 우연찮게 301 Redirects 플러그인에서 제공하는 404 Error Log 기능을 통해, 워드프레스가 공격을 받고 있는 것을 확인하게 되었습니다.
물론 서버에서 로그파일을 직접 확인할 수도 있지만, 301 Redirects 플러그인이 알림판에서 알림을 해주었기에, 상당히 큰 도움을 받게 되었습니다.
이 글에서는 워드프레스 사용자 로그인 아이디를 쉽게 알아내는 방법 그리고 방지방법을 정리해보았습니다.
1. WordPress 사용자 정보 노출 문제

워드프레스는 기본적으로 사용자 로그인 정보를 외부에서 조회할 수 있습니다. 즉 워드프레스 관리자의 로그인 아이디를 쉽게 알아낼 수 있다는 것이기에, 타인이 비밀번호만을 알게 되면 로그인이 가능하다는 것이겠습니다.
1-1. 사용자 로그인 아이디 조회방법
아래와 같은 URL을 통해 워드프레스의 로그인 ID(사용자명)가 노출되는 문제가 발생할 수 있습니다.
https://example.com/?author=1
위 URL에서 노란색 부분을 자신의 워드프레스 URL주소로 변경하고 접근하면, 자동으로 아래처럼 리디렉트되면서 사용자명이 노출됩니다.
https://example.com/author/사용자명/
사용자명이 바로 워드프레스의 로그인 아이디가 되겠습니다.
그리고 ?author=N에서 N을 숫자 1,2,3,4… 이렇게 변경하면서, 타 사용자명도 모두 조회가 됩니다.
1-2. 사용자 로그인 아이디 노출의 위험성
워드프레스에 로그인할 때, 이메일 또는 사용자명 즉 아이디로 가능합니다.
위에서 사용자의 로그인 아이디가 바로 노출되기에, 해커들이 비밀번호만 알아버리게 되면, 쉽게 워드프레스에 로그인할 수 있겠습니다.
관리자 아이디뿐 아니라, 타 사용자들의 아이디도 모두 조회가 가능하기에, 조치를 취하지 않으면 언젠가는 해킹될 가능성이 있겠습니다.
또한 워드프레스 아이디는 변경할 수 없기에, 한번 노출되면은 새로운 아이디를 만들어 사용자를 변경하지 않는 한 리스크는 항상 남아 있겠습니다.
2. 보안 강화 방법 (가장 추천)
?author=N를 통한 사용자 아이디가 노출되지 않도록 막기 위해, 여러가지 방법이 있지만, 필자가 가장 추천하는 방법은 .htaccess 파일을 수정하는 것이겠습니다.
.htaccess 파일은 서버접속이 필요하지만, 그닥 어려운 것이 아니니, 아래 내용을 잘 읽어보면서 따라하면 충분히 할 수 있습니다.
2-1. .htaccess 차단 (403 Forbidden)

https://example.com/?author=1로 접속하는 것 자체를 차단하는 방법이 되겠는데, 아래 코드를 .htaccess 파일에 추가해주면 되겠습니다.
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*) [NC]
RewriteRule .* - [F,L]
</IfModule>
✅ 보안 효과
- ?author=n 요청이 들어오면 403 Forbidden 응답을 반환
- 완전히 차단되므로 보안이 더욱 강화
2-2. .htaccess 차단 (301 리디렉트)

403 Forbidden도 좋지만, SEO를 생각해서는 홈페이지로 301 리디렉트 해주는 것이 더 좋을 수 있겠습니다.
아래 코드를 .htaccess 에 추가해주면, ?author=n 요청이 들어올 때 홈페이지로 영구 리디렉트됩니다.
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*) [NC]
RewriteRule .* https://example.com/? [L,R=301]
</IfModule>
https://example.com 를 자신의 블로그 URL주소로 변경해주면 되겠습니다.
✅ 보안 효과
- ?author=n 요청이 들어오면 홈페이지로 리디렉트
- 301 리디렉트는 영구 이동이므로 검색엔진에도 반영
3. 보안 강화 방법 (참고)
.htaccess 파일을 수정하는 방법을 가장 추천하겠으며, 아래와 같은 방법은 그냥 있는 정도로 알고 있으면 되겠습니다.
3-1. functions.php을 이용한 리디렉트 설정

functions.php 파일에 아래 코드를 추가하면 ?author=n 형태의 URL 요청이 들어오면 홈페이지 (혹은 404 페이지)로 리디렉트됩니다.
3-1-1. 404 페이지로 리디렉트
function block_author_queries() {
if (!is_admin() && preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])) {
wp_safe_redirect(home_url('/404.php')); // 404 페이지로 리디렉트
exit();
}
}
add_action('init', 'block_author_queries');
3-1-2. 홈페이지로 리디렉트
function block_author_queries() {
if (!is_admin() && preg_match('/author=([0-9]*)/i', $_SERVER['QUERY_STRING'])) {
wp_safe_redirect(home_url('/')); // 홈페이지로 리디렉트
exit();
}
}
add_action('init', 'block_author_queries');
✅ 보안 효과
- ?author=1과 같은 URL 접근 시 홈페이지 또는 404 페이지로 리디렉트
- 검색 엔진에도 반영되므로 SEO 영향을 최소화
3-2. author.php 파일을 이용한 차단 (추천안함)

WordPress 테마 파일 편집기에 author.php 파일이 있는 경우, 해당 파일을 수정하여 접근을 차단할 수도 있습니다. 없다면은 파일을 만들어 업로드도 가능하지만, 기본적으로 이 방법은 추천하지 않습니다.
author.php 파일 추가 코드
<?php
wp_safe_redirect(home_url());
exit();
?>
✅ 보안 효과
- https://example.com/author/사용자명/ 페이지 접근 시 홈페이지로 리디렉트
- 사용자명이 노출되는 것을 방지
⚠️ 하지만, 응답 헤더(Location)에 사용자명이 포함될 수 있어 완벽한 해결책은 아닙니다.
그래서 가장 추천하는 방법은 .htaccess 파일을 수정하는 것이지만, 아래 추가적인 보안조치도 꼭 필요하겠습니다.
4. 추가 보안 조치 (WP REST API 보안 강화)
https://example.com/wp-json/wp/v2/users에서 노란색 부분을 자신의 블로그 URL주소로 변경하고 입력하면, 역시 로그인 아이디 조회가 가능하겠습니다.
이를 차단하는 방법도 아래와 같은 두가지 방법이 있습니다.
4-1. functions.php 수정

이를 차단하려면 아래 코드를 테마 파일 편집기-자식테마의 functions.php에 추가해주시면 되겠습니다.
function disable_rest_user_endpoints($endpoints) {
if (!is_user_logged_in()) {
unset($endpoints['/wp/v2/users']);
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
}
return $endpoints;
}
add_filter('rest_endpoints', 'disable_rest_user_endpoints');
✅ 보안 효과
- 로그인하지 않은 사용자가 https://example.com/wp-json/wp/v2/users 를 통해 사용자 정보를 조회하는 것을 차단
다만, 테마를 변경하게 되면 functions.php에 위 코드를 다시 추가해주어야 하겠습니다.
또는 아래 방법을 선택할 경우, 테마가 바뀌어도 문제가 없겠습니다.
4-2. disable-rest-users.php 파일 수정
disable-rest-users.php 파일은 서버에 접속하여 수정해야 하는데, mu-plugins 폴더안에 있으면 수정하고 없으면 추가해줄 수 있습니다.
서버에서 wp-content/mu-plugins/disable-rest-users.php를 찾아, 아래 코드를 추가해줍니다.
<?php
function disable_rest_user_endpoints($endpoints) {
if (!is_user_logged_in()) {
unset($endpoints['/wp/v2/users']);
unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
}
return $endpoints;
}
add_filter('rest_endpoints', 'disable_rest_user_endpoints');
wp-content/mu-plugins/ 폴더가 없다면 생성해주고 disable-rest-users.php 파일을 만들어 위 내용을 삽입해주면 되겠습니다.
5. 마무리
워드프레스 사용자 로그인 아이디 노출을 방지하는 방법은 위에서 언급한 것들이 있는데, 가장 추천하는 것은 아래 두 조합이 되겠습니다.
2. 보안 강화 방법 (가장 추천) -> 2-1-2. SEO 고려한 301 리디렉트
4. 추가 보안 조치 (WP REST API 보안 강화) -> 4-1. functions.php 수정
위 설정을 적용한 후, 브라우저 캐시를 삭제하고 다시 테스트해보면, 로그인 아이디가 노출되지 않는 것을 확인할 수 있겠습니다.
워드프레스 로그인 아이디는 쉽게 조회할 수 있기에, 위 방법으로 차단하지 않으면, 쉽게 해킹당할 수 있겠습니다.
댓글