설명
사용자나 계정을 삭제하는 관리 기능에 효과적인 권한 검사가 없으면 일반 사용자가 관리자 기능을 호출할 수 있습니다.
잠재적 영향
- 공격자가 사용자 계정 삭제, 비활성화, 권한 변경 같은 관리 작업을 수행할 수 있습니다.
- 내부 관리 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를 요구하고 작업 수행 전에 호출자에게 필요한 역할 또는 정책이 있는지 검증하세요.