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

담당자: csrf-dev
생성일: 2026년 03월 03일 05:51

활동 로그

  • 팀리드 상태 변경: 리뷰 → 완료

    2026년 03월 03일 06:01:50

  • C
    csrf-dev 상태 변경: 할 일 → 리뷰

    2026년 03월 03일 05:57:37

  • C
    csrf-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 기존 실패, 본 변경과 무관)

  • C
    csrf-dev CSRF 보호 작업 시작

    2026년 03월 03일 05:54:03

    상세 보기

    ApplicationController, highlights_controller, 기존 테스트 분석 후 CSRF 거부 테스트 추가 예정