피드로 돌아가기
Why Cursor Keeps Setting CORS to * (And How to Fix It)
Dev.toDev.to
Security

AI 생성 코드의 함정, CORS 와일드카드 설정 제거 및 보안 강화 전략

Why Cursor Keeps Setting CORS to * (And How to Fix It)

Charles Kern2026년 4월 7일4intermediate

Context

Cursor 등 AI 에디터가 Express 백엔드 생성 시 origin: '*' 설정을 기본으로 제안하는 경향 발견. 이는 학습 데이터 내의 단순 구현 예제들이 보안보다 동작 우선으로 작성된 결과. 인증된 API에서 와일드카드 CORS 설정은 세션 토큰을 이용한 타 사이트의 요청 및 응답 탈취 가능성을 열어두는 취약점.

Technical Solution

  • 정적 문자열 * 대신 런타임 시점에 유효성을 검증하는 Validator 함수 도입
  • 환경 변수 기반의 ALLOWED_ORIGINS 리스트를 구성하여 개발 및 운영 환경별 허용 도메인 분리
  • !origin 케이스를 허용하여 Origin 헤더가 없는 Server-to-Server 요청 및 CLI 도구의 접근성 유지
  • credentials: true 설정과 동적으로 검증된 Origin을 결합하여 브라우저의 보안 거부 반응 해결
  • 허가되지 않은 도메인 요청 시 Access-Control-Allow-Origin 헤더가 누락되도록 설계하여 비정상 접근 차단
  • CI 파이프라인 내에 미승인 Origin의 요청을 차단하는 통합 테스트 코드를 추가하여 설정 회귀 방지

Key Takeaway

AI가 제안하는 코드는 '동작'을 보장할 뿐 '보안'을 보장하지 않으므로 엔지니어의 비판적 검토와 검증 프로세스 필수. 편리한 설정보다 명시적인 화이트리스트 기반의 보안 설계 원칙 준수가 중요.


AI 생성 CORS 설정 발견 시 즉시 화이트리스트 함수로 교체하고, 이를 검증하는 통합 테스트를 CI에 추가할 것

원문 읽기