
무엇이 터졌나
관리 화면을 쓰다 보면 Too many requests 가 떴습니다.
공격이 아니라 정상 사용이었습니다.
왜 그랬나
두 가지가 겹쳤습니다.
하나. 사람 기준으로 잡았습니다. 관리 화면은 한 번 열 때 라우트·메뉴·목록·분류·보기 설정을 한꺼번에 부릅니다. 사람은 한 번 클릭했지만 요청은 수십 건입니다. 화면 몇 개만 돌아다녀도 한도를 넘습니다.
둘. 성공한 요청까지 셌습니다. 로그인 제한이 특히 그랬습니다. 막고 싶은 것은 비밀번호를 찍어 보는 짓이지 로그인 자체가 아닙니다. 성공까지 세면 사무실처럼 한 IP 를 여럿이 쓸 때 정상 사용자끼리 서로를 막습니다.
어떻게 막았나
- 전체 한도는 화면 기준으로 다시 잡았습니다
- 로그인·인증번호 검증은 실패만 셉니다. 방어력은 그대로고 불편만 사라집니다
- 인증번호 발송은 성공도 셉니다 — 보낼 때마다 돈이 나가기 때문입니다
- 개발 환경에서는 걸지 않습니다. 막히면 원인을 코드가 아니라 리미터에서 찾느라 시간을 버립니다
고친 뒤 목록 API 를 연속으로 두드려 보고, 로그인도 반복해 봤습니다. 예전 설정이면 중간에 막혔을 횟수까지 전부 통과했습니다.
다음
보안 설정은 틀려도 조용합니다. 너무 느슨하면 사고가 날 때까지 모르고, 너무 빡빡하면 사용자가 불편을 참다가 어느 날 떠납니다.
"무엇을 막으려는가" 를 한 문장으로 쓸 수 있으면 숫자는 따라옵니다.
