기능 수준 접근 제어 누락

C# 기능 수준 접근 제어 누락

설명

사용자나 계정을 삭제하는 관리 기능에 효과적인 권한 검사가 없으면 일반 사용자가 관리자 기능을 호출할 수 있습니다.

잠재적 영향

  • 공격자가 사용자 계정 삭제, 비활성화, 권한 변경 같은 관리 작업을 수행할 수 있습니다.
  • 내부 관리 API가 외부 요청에 노출된 경우 대량 계정 손상이나 서비스 장애로 이어질 수 있습니다.

해결 방법

삭제, 비활성화, 권한 변경 같은 민감한 액션에는 Authorize를 적용하고 역할 또는 정책 기반 권한을 서버에서 확인합니다.

예시

변경 전

csharp
[HttpDelete("delete-user")]
public IActionResult DeleteUser([FromQuery] int id)
{
    return Ok();
}

변경 후

csharp
[Authorize(Roles = "Admin")]
[HttpDelete("delete-user")]
public IActionResult DeleteUser([FromQuery] int id)
{
    return Ok();
}

설명:

  • 변경 전: 액션, 컨트롤러 또는 전역 정책에서 권한 검사를 적용하지 않으면 계정 관리 작업이 권한 없는 호출자에게 노출될 수 있습니다.
  • 변경 후: 파괴적인 사용자 또는 계정 관리 작업에는 Authorize를 요구하고 작업 수행 전에 호출자에게 필요한 역할 또는 정책이 있는지 검증하세요.

참조