brunch

#5. REST API가 기본으로 실행 중일 때의 문제

카카오 지도 API & 워드프레스 REST API

by oksambari

REST API는 앞서 카카오 지도 API를 활용할 JSON 데이터 주소를 간편하게 만들 수 있는 방법을 제공하기도 하고, 여기에서 소개하는 것과 같이 데이터를 불러오는 것 외에도 콘텐츠를 만들 수도, 또는 수정을 할 수 있는 등 다양한 활용이 가능한 API입니다.


워드프레스를 설치 한 다음 별도의 조치를 취하지 않는다면, 기본이 사용 가능한 환경이 만들어져 있습니다.


그런데 기본으로 제공되는 Endpoint 주소 중 users 리스트를 볼 수 있는 주소에는 유저의 정보 중 유저네임(아이디)이 노출될 수 있는 문제점을 가지고 있습니다. 닉네임에 해당하는 name(별명)은 프로필 설정에서 변경을 하면 되는데, link 정보와 slug 정보를 통해 유저네임이 노출이 됩니다. 만약 이 구조를 아는 사람이라면 어드민 아이디는 일단 확보 후 사이트 해킹을 시도해 볼 수 있는 상황이 되는 것이죠.

2022073114-cap-016.jpg





해결 방법


1. 로그인 한 사용자만 REST API를 이용할 수 있게 한다.

비즈니스 사이트 및 블로그를 운영한다면 대개 어드민만 콘텐츠 작성 및 사이트를 관리하는 경우입니다. 이럴 땐 로그인을 하기 전에는 REST API 주소에서 아무 결과를 보여주지 않게 조치할 수 있습니다.

> https://developer.wordpress.org/rest-api/frequently-asked-questions/

링크된 문서의 중간에 나오는 코드를 자식 테마의 functions.php 파일에 추가를 해 주면 일반 방문자는 REST API 주소를 통해 아무 정보를 얻을 수 없게 됩니다.

2022073115-cap-017.jpg


2. REST API를 관리할 수 있는 플러그인을 사용한다.

관련 글들을 찾아보니, 두 가지 괜찮은 플러그인이 있었습니다.

> Disable WP REST API

> REST API Toolbox

처음 것은 별도의 설정 없이 플러그인만 활성화하면 모든 REST API 관련 기능이 꺼집니다.

두 번째 것은 모두를 끌 수 있는 기능뿐 아니라, 코어 Endpoint 주소 중 불필요한 것만 끌 수 있는 방법도 제공합니다. users 주소는 사용 안 하는 것으로 바꾸면 더 이상 users 정보들은 REST API 주소에서 노출이 되지 않습니다.

2022073115-cap-018.jpg
2022073115-cap-019.jpg




3. 보안 플러그인 중에 REST API를 켜고 끄는 옵션이 있는지 체크한다.

사이트 제작을 완료할 시점에는 반드시 보안 플러그인을 설치해야 합니다. 그래야 기본적인 해킹 시도에 대한 차단을 할 수 있게 됩니다. 저는 주로 'iThemes Security'를 썼었는데, 설치 후 REST API를 끄는 옵션이 있어서 기존에는 이걸 이용했었습니다.







부가 조치


워드프레스에는 REST API의 users 주소 외에도 어드민의 유저네임이 노출될 수 있는 주소가 하나 더 있습니다. 워드프레스로 만들어진 사이트 주소 끝에 '(도메인)/?author=1'이라고 추가해서 방문해 보면, '(도메인)/author/(1번 유저의 유저네임)/' 형태의 주소로 바뀌면서 유저네임을 알아낼 수 있습니다. 사이트 기획상 각 작성자들의 글을 모아 보여주는 작성자 페이지가 계획된 것이 아니라면, author 페이지를 방문 시도 시 메인 페이지로 돌아가게 하는 조치를 취할 수 있습니다.

2022073115-cap-020.jpg






카카오 지도 API와 워드프레스의 REST API를 가지고 지도를 활용한 콘텐츠로의 링크 표시를 어떻게 하는지 작성을 해 봤습니다. 마지막으로 추가했으면 하는 보안 조치도 소개를 해 봤습니다.


정리를 위해 가장 기본적인 구조를 만들어 본 것이고, 여기에서 다양한 활용 방법들이 나올 수도 있을 듯합니다.




'카카오 지도 API & 워드프레스 REST API' 활용 방법 정리

끝.





keyword
매거진의 이전글#4. 마커 위에 링크가 있는 타이틀 표시