설명
회원 가입이나 프로필 수정 요청에서 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"
};
설명:
- 변경 전: 요청에서 역할 또는 권한 필드를 받아 계정에 할당하면 사용자가 스스로 상승된 권한을 부여할 수 있습니다.
- 변경 후: 클라이언트 입력에서 역할이나 권한 플래그를 바인딩하지 마세요.