CSRF 보호 비활성화

C# CSRF 보호 비활성화

설명

ASP.NET Core에서 IgnoreAntiforgeryToken을 사용하면 해당 컨트롤러나 액션의 위조 요청 검증이 비활성화됩니다. 쿠키 기반 인증을 사용하는 상태 변경 요청에서 이 설정이 적용되면 공격자가 사용자의 브라우저를 이용해 원치 않는 작업을 수행하게 만들 수 있습니다.

잠재적 영향

  • 사용자의 인증 쿠키가 자동으로 전송되어 계정 설정 변경, 결제, 데이터 삭제 같은 작업이 실행될 수 있습니다.
  • 관리 기능에 적용된 경우 권한 있는 사용자의 세션을 악용할 수 있습니다.

해결 방법

상태를 변경하는 액션에서 IgnoreAntiforgeryToken을 제거하고 antiforgery 토큰 검증을 사용합니다. API 전용 엔드포인트는 브라우저가 자동으로 전송하지 않는 인증 방식과 CORS 정책을 함께 검토합니다.

예시

변경 전

csharp
[IgnoreAntiforgeryToken]
[HttpPost("transfer")]
public IActionResult Transfer()
{
    return Ok();
}

변경 후

csharp
[ValidateAntiForgeryToken]
[HttpPost("transfer")]
public IActionResult Transfer()
{
    return Ok();
}

설명:

  • 변경 전: 상태를 변경하는 ASP.NET Core 엔드포인트에서 위조 방지 검증을 명시적으로 비활성화하면 쿠키 기반 인증 사용 시 CSRF가 가능해질 수 있습니다.
  • 변경 후: 상태 변경 작업에서 IgnoreAntiforgeryToken을 제거하고 위조 방지 토큰을 요구하거나, 브라우저가 자동으로 전송하지 않는 인증 메커니즘을 사용하세요.

참조