Skip to content

[ Auth ] 회원가입 요청의 role 을 신뢰해 누구나 관리자가 된다 #82

Description

@RosieOh

💚 어떤 기능인가요?

POST /auth/registerpermitAll 이다. 그런데 UserService.createUser 가 요청 본문의
role 을 그대로 엔티티에 넣는다. 인증 없이 누구나 관리자 계정을 만들 수 있다.

.role(UserRole.valueOf(role)) // 요청 본문의 role
.provider(userDto.getProvider()) // provider 도 그대로
.emailVerified(userDto.getProvider() != null)
curl -X POST /auth/register -H 'Content-Type: application/json' \
-d '{"email":"x@x.com","password":"pw123456","name":"공격자","role":"ADMIN"}'# → ADMIN 발급 → /api/admin/** 전체 접근

곁가지로 provider 를 붙이면 비밀번호 검사를 건너뛰고 emailVerified=true 인 계정을
임의 이메일로 미리 만들 수 있다.

createUser 의 호출처는 이 공개 엔드포인트 하나뿐이고, 카카오 가입은
AuthServiceImpl.createNewUser 라는 별도 경로라 서버 고정이 안전하다.

✅ To Dos

  • role 을 무시하고 항상 PARENT 로 저장
  • provider / providerId 를 무시하고 null 로 저장
  • emailVerified 를 항상 false 로 시작
  • provider 로 비밀번호 검사를 건너뛰던 분기 제거
  • UserRole.valueOf(null) 로 500 이 나던 것 해결
  • 회귀 테스트 추가

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions