공개 API에 요청 제한이 없으면 생기는 일 - Token Bucket으로 핵심 자원만 정확히 보호하기
·
BackEnd
1. 공개 API에 제한이 없으면 생기는 일배포를 앞두고 전체 API를 점검하고 있었습니다. 기능 테스트는 통과했고, 정상적인 흐름에서는 문제가 없었습니다. 그런데 하나가 마음에 걸렸습니다. 구독 신청 API를 아무런 제한 없이 누구나 호출할 수 있다는 것이었습니다. 이 API는 단순한 데이터 저장이 아닙니다. 호출될 때마다 Gmail SMTP를 통해 인증 메일을 발송합니다. 문제는 Gmail SMTP에 하루 500건이라는 발송 제한이 있다는 것입니다. 정상적인 사용이라면 하루에 500건을 넘길 일은 없습니다. 하지만 정상적인 사용만 들어온다는 보장은 어디에도 없습니다.시나리오를 하나 그려봤습니다. 공격자가 스크립트 하나를 작성합니다. 구독 API에 매번 다른 이메일 주소를 넣어서 반복 호출합니다. 요청..