사용자 제어 역할 할당

C# 사용자 제어 역할 할당

설명

회원 가입이나 프로필 수정 요청에서 Role, IsAdmin, IsPrivileged 같은 권한 필드를 그대로 받아 계정에 저장하면 사용자가 자신의 권한을 직접 상승시킬 수 있습니다.

잠재적 영향

  • 일반 사용자가 관리자나 특권 역할을 스스로 부여할 수 있습니다.
  • 권한 검사를 우회해 관리 기능, 민감 데이터, 내부 작업에 접근할 수 있습니다.

해결 방법

클라이언트 요청 모델에서 역할과 권한 필드를 제거합니다. 역할 변경은 별도 관리자 기능에서 수행하고, 호출자가 해당 역할을 부여할 권한이 있는지 서버에서 검증합니다.

예시

변경 전

csharp
var user = new User
{
    Email = request.Email,
    Role = request.Role ?? "User"
};

변경 후

csharp
var user = new User
{
    Email = request.Email,
    Role = "User"
};

설명:

  • 변경 전: 요청에서 역할 또는 권한 필드를 받아 계정에 할당하면 사용자가 스스로 상승된 권한을 부여할 수 있습니다.
  • 변경 후: 클라이언트 입력에서 역할이나 권한 플래그를 바인딩하지 마세요.

참조