-
Notifications
You must be signed in to change notification settings - Fork 0
Feat/Member Id 주입 방식 변경 #11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The head ref may contain hidden characters: "feat/Member-Id-\uC8FC\uC785-\uBC29\uC2DD-\uBCC0\uACBD"
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -39,20 +39,6 @@ public Object resolveArgument(MethodParameter parameter, | |||||||||||||||||||||||||||||
| log.info("HttpServletRequest is null"); | ||||||||||||||||||||||||||||||
| throw new MemberNotFoundException("사용자 정보를 찾을 수 없습니다."); | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| String token = resolveToken(request); | ||||||||||||||||||||||||||||||
| if (token == null || !jwtTokenProvider.validateToken(token)) { | ||||||||||||||||||||||||||||||
| throw new MemberNotFoundException("사용자 정보를 찾을 수 없습니다."); | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| return jwtTokenProvider.getMemberId(token); | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||
| private String resolveToken(HttpServletRequest request) { | ||||||||||||||||||||||||||||||
| String bearerToken = request.getHeader("Authorization"); | ||||||||||||||||||||||||||||||
| if (bearerToken != null && bearerToken.startsWith("Bearer ")) { | ||||||||||||||||||||||||||||||
| return bearerToken.substring(7); | ||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||
| return null; | ||||||||||||||||||||||||||||||
| return Long.parseLong(request.getHeader("X-Member-Id")); | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
| return Long.parseLong(request.getHeader("X-Member-Id")); | |
| String memberIdHeader = request.getHeader("X-Member-Id"); | |
| if (memberIdHeader == null || memberIdHeader.isBlank()) { | |
| log.info("X-Member-Id 헤더가 누락되었거나 비어 있습니다."); | |
| throw new MemberNotFoundException("유효한 사용자 정보를 찾을 수 없습니다. (X-Member-Id 헤더 누락)"); | |
| } | |
| try { | |
| return Long.parseLong(memberIdHeader); | |
| } catch (NumberFormatException e) { | |
| log.info("X-Member-Id 헤더 값이 숫자 형식이 아닙니다. value={}", memberIdHeader, e); | |
| throw new MemberNotFoundException("유효한 사용자 정보를 찾을 수 없습니다. (X-Member-Id 형식 오류)"); | |
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
문제점: JWT 토큰 기반의 인증/검증 로직이 완전히 제거되어, X-Member-Id 헤더 값을 아무런 검증 없이 신뢰하고 있습니다. 이는 심각한 보안 취약점입니다.
영향: 악의적인 사용자가 임의의 X-Member-Id 값을 헤더에 설정하여 다른 사용자로 위장할 수 있습니다. 인증/인가 없이 모든 사용자의 데이터에 접근 가능합니다.
수정 제안: