Spring 요청 제한 라이브러리
개인 웹사이트와 Maechuri에서 사용할 요청 제한 로직을 라이브러리로 분리
구현
- Spring MVC와 WebFlux용으로 각각 배포
- 경로별 허용 요청 수와 기간 설정
- 사용자 식별 방식은 서비스별 구현체를 주입
- 제한 상태는 각 서버의 메모리에 저장
IP 식별
- 전달 헤더가 IP 주소 형식이면 사용하고, 아니면 socket 주소 사용
- IP 형식 검증만으로 위조 여부를 판단할 수 없는 문제
- proxy를 거치지 않고 origin에 직접 접근할 수 있으면 전달 헤더 위조 가능. 이 조건과 방어 전제를 문서화
적용
- yunseong.dev: 요청 제한
- Maechuri: 외부 AI API 호출 제한