개발 Q&A

제목 REST API는 보안에 취약할까요?
카테고리 PHP
글쓴이 한울리어 작성시각 2021/06/29 15:13:48
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 7945   RSS

안녕하세요.

Codeigniter로 REST API를 만들다가

문득 "내가 만든 API를 내가 사용하길 원하는 대상이 아니라 임의의 어나니머스(Anonymous)가 마음대로 호출해서 사용하면 어쩌지?"

이런 생각이 들었습니다.

 

그래서 REST API를 사용하고 있는 국내 꽤 유명한 상용 서비스 플랫폼에 들어가서 한 번 작동 방식을 살펴봤는데, 

회원가입할때 인증 메일 보내는걸 GET 방식의 REST API 호출해서 하더라고요.

그 유명한 상용 서비스를 그대로 공개하면 문제가 될 요소가 있을까봐

예로들어서 비유해서 설명해보면 https://auth.platform.kr/sendEmail?id=user@naver.com 처럼요.

경우에 따라서 API Key를 보내기도 하던데, API Key 역시 원본 사이트 브라우저 NetWork를 보면 값이 나오니까 의미가 없더라구요.

 

아무튼 그래서 제가 해당 사이트에서 호출하는게 아니라

POSTMAN과 같은 별도의 API 테스트 툴에서 제가 그냥 이메일만 바꿔서 막 호출해봤는데

해당 사이트에서 한 행위가 아님에도 불구하고 이메일 인증이 잘 발송되더라구요.

그럼 예를들어서 제가 해당 이메일 인증하는 API를 프로그램으로 돌려서 1억만개를 전송하게 해도 그냥 된다는 이야기가 되잖아요?

대상을 임의의 네이버 이메일로 설정하고 1억만개 돌리면 해당 상용 서비스에서 발송하는 이메일을 네이버에서 스팸처리로 막을까요?

이런 여러가지 생각이 들더라고요.

 

그래서 이런걸 보고, 이정도 규모가 되는 서비스에서도 이렇게 되도록 방치하는거보면 REST API는 자사 서비스에서만 작동하게는 못하는건가?

하는 생각이 들었습니다.

 

아이디와 이메일 인증하면 토큰을 발급하게 해서 해당 토큰을 API로 전송해주는 로그인 이후의 처리 말고, 

로그인을 하기전에 호출되는 여러 REST API는 자사 서비스에서만 호출되게 하는게 불가능한가요?

아니면 원래 REST API는 이런건데 제가 너무 이상하게 생각하고 있는걸까요?

궁금하네요... 

 다음글 mysql 조회시 질문있어요. (2)
 이전글 php에서 외부 smtp 따로 쓰지 않고 전송하는 방법... (3)

댓글

변종원(웅파) / 2021/06/29 15:19:44 / 추천 0

그래서 토큰을 사용해서 인증된 요청만 작동하게 합니다.

데이터 자체를 암호화 해서 보내기도 하고 특정 아이피나 네트워크에서만 접근하도록 하기도 하고 방법은 많습니다.