API CSRF 보호 수정 + 테스트 강화
ID: 02012328-eb6b-4a13-b459-67c7c5331fba
## 목표
api/bible/highlights_controller.rb의 CSRF 보호를 명시적으로 강화하고 테스트 추가
## 수정 내용
1. ApplicationController 확인: protect_from_forgery가 활성화되어 있는지 검증
2. api/bible/highlights_controller.rb에 skip_before_action :verify_authenticity_token이 없는지 확인 (없으면 OK)
3. test/controllers/api/bible/highlights_controller_test.rb에 CSRF 토큰 없이 POST/DELETE 시 거부되는지 테스트 추가
4. app/javascript/controllers/bible_passage_controller.js의 fetch 호출이 X-CSRF-Token 헤더를 올바르게 전송하는지 확인
## 담당 파일 (이 파일들만 수정)
- app/controllers/api/bible/highlights_controller.rb
- test/controllers/api/bible/highlights_controller_test.rb
- app/javascript/controllers/bible_passage_controller.js (필요시만)
## 완료 기준
- CSRF 토큰 없는 POST/DELETE 요청이 422로 거부됨 (테스트 검증)
- 기존 테스트 전체 통과
- bin/rails test 실행 결과 0 failures, 0 errors
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 03일 06:01:50
-
Ccsrf-dev 상태 변경: 할 일 → 리뷰
2026년 03월 03일 05:57:37
-
Ccsrf-dev CSRF 보호 검증 및 테스트 추가 완료
2026년 03월 03일 05:57:36
상세 보기
## 분석 결과\n- ApplicationController: `ActionController::Base` 상속으로 `protect_from_forgery with: :exception` 기본 적용\n- HighlightsController: `skip_before_action :verify_authenticity_token` 없음 (양호)\n- JS (bible_passage_controller.js): `X-CSRF-Token` 헤더 정상 전송 (L405, L411, L436)\n\n## 변경 사항\n- `test/controllers/api/bible/highlights_controller_test.rb`에 CSRF 테스트 2개 추가:\n 1. POST without CSRF token → 422 거부 확인\n 2. DELETE without CSRF token → 422 거부 확인\n- `ActionController::Base.allow_forgery_protection = true`로 forgery protection 활성화하여 검증\n\n## 테스트 결과\n- highlights_controller_test: 13 runs, 25 assertions, 0 failures\n- 전체 테스트: 548 runs, 2 failures (PrayerPartnersControllerTest 기존 실패, 본 변경과 무관)
-
Ccsrf-dev CSRF 보호 작업 시작
2026년 03월 03일 05:54:03
상세 보기
ApplicationController, highlights_controller, 기존 테스트 분석 후 CSRF 거부 테스트 추가 예정