설명
요청 본문을 도메인 객체에 직접 바인딩하고 저장하면 공격자가 관리자 여부, 잔액, 권한 같은 내부 필드를 함께 덮어쓸 수 있습니다.
잠재적 영향
- 권한 상승, 계정 속성 변조, 내부 상태 변경이 발생할 수 있습니다.
해결 방법
요청 DTO를 따로 만들고 허용된 필드만 명시적으로 도메인 객체에 복사합니다.
예시
변경 전
csharp
currentUser = model;
변경 후
csharp
currentUser.Name = dto.Name;
currentUser.Email = dto.Email;
설명:
- 변경 전: 요청 본문을 도메인 객체에 직접 바인딩하면 공격자가 권한 있는 필드나 내부 필드를 덮어쓸 수 있습니다.
- 변경 후: 요청을 DTO에 바인딩하고 허용된 필드만 명시적으로 도메인 객체에 복사하세요.