admin 세션 연장 CSRF 차단 해제 + TTL 1시간 - #702
Conversation
연장 버튼(POST /admin/session/extend)이 CSRF 에 막혀 403 나고, 프론트가 그 실패 응답(remainingSeconds 없음)을 '만료됨'으로 오표시했다. GET /ttl 은 safe method 라 통과해 남은시간은 보이는데 연장만 조용히 실패하던 문제. - /admin/session/** 을 CSRF 제외에 추가. 폼이 아니라 fetch(JSON) API 라 admin-access 처럼 토큰을 실을 수 없다(자기 세션 연장이라 CSRF 위험도 없음). - allowlistTtl 24h → 1h. 무활동 만료를 짧게, 연장 버튼으로 갱신. - 연장 fetch 가 비 2xx·네트워크 실패 시 기존 카운트다운 유지(만료 오표시 방지).
|
Discord 스레드 연동용 메타데이터입니다. discord-pr-bot 워크플로가 자동 생성하며, 수정·삭제하면 PR 과 Discord 알림 연동이 끊깁니다. |
|
Warning Review limit reached
Next review available in: 28 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Situation
Task
Action
원인
AdminSecurityConfig가 CSRF 를/admin-access/**만 제외하고/admin/**은 유지했다.POST /admin/session/extend는/admin/**→ CSRF 적용 → 프론트 fetch 는 토큰을 안 실어 403remainingSeconds가 없어 프론트가undefined | 0 = 0→ "만료됨" 오표시GET /admin/session/ttl은 safe method 라 CSRF 무관 → 남은시간은 정상 표시(그래서 연장만 실패로 보였다)수정
/admin/session/**를 CSRF 제외에 추가. 폼이 아니라 fetch(JSON) API 라admin-access처럼 토큰을 실을 수 없다. 자기 세션 연장이라 CSRF 위험도 없다.allowlistTtl24h → 1h. 무활동 만료를 짧게 하고 연장 버튼으로 갱신(AdminProperties·application.yml양쪽).Result
admin.enabled=false인 test 컨텍스트라/admin게이트 통합테스트가 막혀(admin 세션 남은시간 표시 + 연장 버튼 (자동연장 제거) #669 와 동일) 실동작은 배포 후 확인한다. 컴파일은 통과.연관 이슈