You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[ Infra ] #80 머지 전 운영 전제 확인 (XFF 신뢰, 리프레시 토큰 저장소) #90
Activity
RosieOh commentedon Aug 22, 2026
리뷰 결과 — 항목 1(XFF)의 전제가 틀렸다
머지 전 점검 중 확인한 내용이다. 이 이슈에 처음 적은 근거가 사실과 달랐다.
실질적인 XFF 신뢰 스위치는
app.rate-limit.*이 아니다application.yml에 이미 있는 설정이 진짜 스위치다.이게 등록하는
ForwardedHeaderFilter가 요청을 감싸서getRemoteAddr()자체를X-Forwarded-For 의 클라이언트 주소로 바꿔친다. 실측 결과다.
ClientIpResolver는trust=false일 때getRemoteAddr()로 폴백하는데,그 값이 이미 헤더에서 온 것이라 두 설정이 같은 결과를 낸다.
ForwardedClientIpTest로 고정해 뒀다.그래서 달라지는 것
이 앱에서는 성립하지 않는다.
forward-headers-strategy가 켜져 있는 한 클라이언트별로 구분된다.#80이전부터 이미 존재했고,#80의RATE_LIMIT_TRUST_XFF=true는 새로 만든 위험이 아니다.#80머지를 막지 않는다. 다만 아래 확인은 여전히 필요하다.남은 확인 (머지와 무관하게 유효)
배포가 포트를 모든 인터페이스에 바인딩한다.
즉 보안그룹/방화벽이 유일한 방어선이고, 뚫려 있으면 XFF 위조로 IP 기준 제한
(로그인 시도, 인증코드 발송)이 무력화된다. 이건
#80과 독립적인 기존 리스크다.-p 127.0.0.1:$PORT:8082로 바인딩을 좁히는 것을 검토X-Forwarded-For를 덮어쓰는지(proxy_set_header X-Forwarded-For $remote_addr)확인 — 이어붙이면(
$proxy_add_x_forwarded_for) 첫 항목이 클라이언트 위조값이 될 수 있다app.rate-limit.trust-forwarded-headers를 없애고forward-headers-strategy하나로 일원화할지 검토 (지금은 이름이 통제력을 과장한다)항목 3 (인증 메일 기준 주소) — 기동 실패로 변경
#80에서 운영 기본값을 빈 문자열로 뒀는데, 그러면 링크가/auth/verify?token=...상대 경로로 나가 메일에서 클릭이 안 된다. 사용자는 이유를 모른 채 인증에 실패한다.
기본값을 제거해
DB_PASSWORD/JWT_SECRET과 같은 취급으로 바꿨다.환경변수가 없으면 기동이 실패한다.
배포 실패는 헬스체크에서 걸리고 블루/그린 전환이 안 되므로 자동 롤백된다 — 안전한 실패다.
/opt/carecode/.env에EMAIL_VERIFICATION_BASE_URL추가 (다음 배포 전 필수)항목 2 (리프레시 토큰 저장소) — 변경 없음
redis유지. rate limit 인터셉터가 이미 모든 요청에서 Redis 를 쓰므로 Redis 는사실상 기존 필수 의존이고, 새 의존을 추가하는 것이 아니다.