c#

ASP.NET Core CORS 및 보안 설정 예제 프로젝트 가이드

개발에대해 2025. 9. 29. 11:21
반응형
ASP.NET Core CORS 및 보안 설정 예제 프로젝트 가이드

1. CORS란 무엇인가?

CORS(Cross-Origin Resource Sharing)는 서로 다른 도메인, 포트 또는 프로토콜에서 요청이 발생할 때, 브라우저가 이를 허용할지 제어하는 보안 메커니즘입니다. 예를 들어, https://frontend.example.com에서 https://api.example.com으로 AJAX 요청을 보낼 때, CORS 정책이 없으면 브라우저에서 요청을 차단합니다. 따라서 Web API를 개발할 때 CORS 정책을 올바르게 설정하는 것은 안전하고 원활한 클라이언트-서버 통신을 위해 필수적입니다.

2. 개발 환경 준비

ASP.NET Core에서 CORS와 보안 설정을 적용하기 위해 필요한 개발 환경은 다음과 같습니다.

  • 최신 .NET SDK 설치 (LTS 버전 권장)
  • Visual Studio 2022 또는 Visual Studio Code
  • Postman 또는 브라우저 (API 테스트용)

새 프로젝트 생성은 터미널에서 다음과 같이 수행할 수 있습니다.

dotnet new webapi -o CorsSecurityDemo
cd CorsSecurityDemo
dotnet run

프로젝트가 생성되면 기본 템플릿으로 실행 확인이 가능합니다.

3. ASP.NET Core에서 CORS 설정

Program.cs에서 CORS 정책을 정의하고 적용합니다.

var builder = WebApplication.CreateBuilder(args);

// CORS 정책 정의
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowSpecificOrigin",
        policy =>
        {
            policy.WithOrigins("https://frontend.example.com")
                  .AllowAnyHeader()
                  .AllowAnyMethod();
        });
});

builder.Services.AddControllers();
var app = builder.Build();

// CORS 미들웨어 사용
app.UseCors("AllowSpecificOrigin");

app.UseAuthorization();
app.MapControllers();
app.Run();

위 코드는 특정 도메인에서 오는 요청만 허용하며, 모든 헤더와 메서드를 지원하도록 설정한 예제입니다. 필요에 따라 AllowAnyOrigin을 사용해 모든 도메인을 허용할 수도 있지만, 보안상 권장되지 않습니다.

4. 보안 설정 추가

ASP.NET Core Web API는 기본적으로 HTTPS 사용과 미들웨어를 통한 보안을 권장합니다.

  • HTTPS 강제 사용: `app.UseHttpsRedirection();`
  • HSTS 적용: 장기적인 HTTPS 사용을 브라우저에 알리기 (`app.UseHsts();`)
  • 헤더 보안: `app.UseXContentTypeOptions()`, `app.UseXfo()` 등 미들웨어 사용 가능

예제 Program.cs 설정:

if (!app.Environment.IsDevelopment())
{
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseCors("AllowSpecificOrigin");
app.UseAuthorization();
app.MapControllers();
app.Run();

이렇게 설정하면 브라우저에서 CORS 정책이 적용되며, HTTPS를 통한 안전한 통신과 기본적인 보안 헤더가 적용됩니다.

5. 예제 컨트롤러 만들기

간단한 API 엔드포인트를 만들어 CORS 정책과 HTTPS 적용 여부를 테스트할 수 있습니다.

using Microsoft.AspNetCore.Mvc;

namespace CorsSecurityDemo.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class SampleController : ControllerBase
    {
        [HttpGet]
        public IActionResult Get()
        {
            return Ok(new { Message = "CORS와 보안 설정이 적용된 API 테스트 성공!" });
        }
    }
}

브라우저 또는 Postman에서 https://localhost:5001/api/sample에 GET 요청을 보내어 결과를 확인할 수 있습니다.

6. 실무 적용 팁

  • 개발 환경에서는 `AllowAnyOrigin`으로 테스트할 수 있지만, 배포 시에는 반드시 특정 도메인만 허용하세요.
  • HTTPS 인증서를 배포 환경에 맞게 적용하고, 자동 갱신 설정을 고려하세요.
  • JWT 인증과 결합하면 CORS 정책과 토큰 인증을 함께 사용하여 안전한 API 보호가 가능합니다.
  • Swagger UI에서도 CORS 정책을 고려해 토큰 기반 테스트를 진행하면 실무 테스트가 원활합니다.
  • 정적 파일 호스팅과 프론트엔드 배포 환경에서도 동일 도메인 정책과 CORS 정책을 일치시키세요.

7. 마무리

이번 글에서는 ASP.NET Core에서 CORS 정책 설정과 기본 보안 설정을 적용하는 방법을 살펴보았습니다. 예제 프로젝트를 통해 특정 도메인 허용, HTTPS 강제 적용, HSTS 및 보안 헤더 적용까지 실습했습니다. 이러한 설정은 클라이언트-서버 간 안전한 통신을 보장하고, API를 외부 공격으로부터 보호하는 중요한 기초입니다.

반응형