CORS 설정 오류

C# CORS 설정 오류

설명

임의의 요청 Origin을 허용하면서 credentials도 허용하면, 브라우저가 인증 정보를 보내는 조건에서 신뢰할 수 없는 웹 사이트가 보호된 응답을 읽을 수 있습니다. 실제 쿠키 전송 여부는 클라이언트 설정과 SameSite·브라우저 정책에도 영향을 받습니다.

AllowAnyOrigin()과 AllowCredentials()의 조합은 유효한 credentialed CORS 구성이 아닙니다. 이를 우회하려고 SetIsOriginAllowed(_ => true)를 사용하면 임의 Origin을 신뢰하게 됩니다. CORS는 서버의 인증·권한 검증을 대체하지 않습니다.

잠재적 영향

  • 사용자의 인증 쿠키가 전송되면 신뢰할 수 없는 출처에서 인증된 응답을 읽어 데이터를 탈취할 수 있습니다.

해결 방법

스킴·호스트·포트가 명확한 신뢰 Origin 목록만 허용하고, 필요한 경우에만 credentials를 허용하세요. 임의 Origin을 반사하지 말고 서버의 인증·권한 검증도 유지하세요.

예시

각 발췌는 별도의 CorsPolicyBuilder 설정입니다. 정책 등록과 엔드포인트 적용 코드는 생략했습니다.

변경 전

csharp
policy.SetIsOriginAllowed(_ => true).AllowCredentials();

변경 후

csharp
policy.WithOrigins("https://app.example.com").AllowCredentials();

설명:

  • 변경 전: 모든 Origin을 신뢰하고 credentials를 허용하여, 인증 정보가 전송되면 신뢰할 수 없는 출처에서도 응답을 읽을 수 있습니다.
  • 변경 후: 명시적으로 신뢰하는 origin을 사용하고 임의 Origin 헤더를 반사하지 마세요.

참조