피드로 돌아가기
CodeIgniter 4 CSRF Protection in AJAX Forms — The Complete Fix
Dev.toDev.to
Security

CSRF Token Regenerate 문제 해결을 통한 AJAX 요청 안정성 확보

CodeIgniter 4 CSRF Protection in AJAX Forms — The Complete Fix

sunakshi Thakur2026년 6월 29일11intermediate

Context

CodeIgniter 4의 CSRF 보호 기법은 매 요청마다 Token을 갱신하는 $regenerate = true 설정을 기본으로 채택함. 이로 인해 AJAX 기반의 비동기 요청 시 이전 Token이 무효화되어 419 Error 및 Page Expired 현상이 발생하는 아키텍처적 한계 존재.

Technical Solution

  • Security Config의 $redirect 설정을 false로 변경하여 Redirect 대신 JSON 에러 응답을 통한 클라이언트 제어권 확보
  • Controller 응답 시 최신 CSRF Token과 Token Name을 JSON Payload에 포함하여 서버-클라이언트 간 상태 동기화 구현
  • jQuery $.ajaxSetup을 통한 POST, PUT, DELETE 요청의 Request Header(X-CSRF-TOKEN) 및 Data Body 자동 주입 구조 설계
  • ajaxComplete 콜백을 활용해 매 응답마다 클라이언트 메모리 내의 Token 값을 최신화하는 동적 갱신 루프 구축
  • 특정 API 및 Webhook 엔드포인트를 Filters.php의 except 리스트에 등록하여 불필요한 CSRF 검증 제외 처리

- $regenerate = true 설정 시 AJAX 요청 간의 순차적 처리 보장 또는 Queueing 전략 검토 - 보안 강화를 위해 CSRF Token을 URL 파라미터가 아닌 HTTP Header 또는 Request Body로 전송 - AJAX 애플리케이션 설계 시 서버의 Redirect 응답을 차단하고 표준 HTTP 상태 코드를 반환하는 설정 확인 - iframe 또는 Cross-origin 환경인 경우 SameSite cookie 설정을 'None'으로 조정 및 HTTPS 적용

원문 읽기