인증 엔드포인트 속도 제한 누락

C# 인증 엔드포인트 속도 제한 누락

설명

로그인이나 인증 요청에 효과적인 속도 제한이 없으면 공격자가 짧은 시간에 많은 비밀번호, PIN, 토큰을 시도할 수 있습니다.

잠재적 영향

  • 무차별 대입 공격이나 credential stuffing 공격의 성공 가능성이 높아집니다.
  • 인증 시스템과 로그 저장소에 과도한 부하가 발생할 수 있습니다.

해결 방법

ASP.NET Core Rate Limiting 미들웨어를 사용하고 인증 엔드포인트에 EnableRateLimiting 같은 명시적 정책을 적용합니다. 계정 잠금, 점진적 지연, MFA 같은 추가 보호도 함께 검토합니다.

예시

변경 전

csharp
[HttpPost("login")]
public IActionResult Login([FromBody] LoginRequest request)
{
    return Ok();
}

변경 후

csharp
[EnableRateLimiting("login")]
[HttpPost("login")]
public IActionResult Login([FromBody] LoginRequest request)
{
    return Ok();
}

설명:

  • 변경 전: 엔드포인트나 전역 정책 등에서 속도 제한을 적용하지 않으면 반복적인 인증 시도를 제한하기 어렵습니다.
  • 변경 후: EnableRateLimiting("login")은 미리 등록한 login 정책을 적용합니다. 이 예시는 AddRateLimiter에서 해당 정책을 구성하고, 라우팅 뒤에 UseRateLimiter를 실행하는 설정이 전제입니다.

참조