대량 할당

C# 대량 할당

설명

요청 본문을 도메인 객체에 직접 바인딩하고 저장하면 공격자가 관리자 여부, 잔액, 권한 같은 내부 필드를 함께 덮어쓸 수 있습니다.

잠재적 영향

  • 권한 상승, 계정 속성 변조, 내부 상태 변경이 발생할 수 있습니다.

해결 방법

요청 DTO를 따로 만들고 허용된 필드만 명시적으로 도메인 객체에 복사합니다.

예시

변경 전

csharp
currentUser = model;

변경 후

csharp
currentUser.Name = dto.Name;
currentUser.Email = dto.Email;

설명:

  • 변경 전: 요청 본문을 도메인 객체에 직접 바인딩하면 공격자가 권한 있는 필드나 내부 필드를 덮어쓸 수 있습니다.
  • 변경 후: 요청을 DTO에 바인딩하고 허용된 필드만 명시적으로 도메인 객체에 복사하세요.

참조