-
Notifications
You must be signed in to change notification settings - Fork 3
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
[BE] fix: .jpg 이외의 이미지도 업로드할 수 있게 수정 #605
Conversation
Test Results 44 files + 39 44 suites +39 18s ⏱️ +17s Results for commit d8cd996. ± Comparison against base commit 1d8f222. This pull request removes 43 and adds 190 tests. Note that renamed tests count towards both.
♻️ This comment has been updated with latest results. |
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.
코멘트 하나 확인부탁드립니다~
int dotIndex = fileName.lastIndexOf("."); | ||
|
||
if (dotIndex == -1) { | ||
return ""; |
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.
확장자가 없는 파일이 s3에 업로드 될 수도 있는 걸 의도한건가요??
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.
넵 맞아요~~~ + outofbound 방지입니다
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.
확장자 없는 경우 포함하고 이미지에 관련한 확장자가 아닐 경우에도 예외 주면서 막아야되지 않나요?
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.
content type으로 막고 있슴다
이미지 파일인지 판단하는 방법: MIME 타입이 image/로 시작하는지 판단한다 참고링크
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.
요청 헤더는 충분히 조작될 수 있지 않을까요?
multipart 구조를 보면 각각의 파트는 고유의 Content-Type을 가집니다.
만약 악성 파일의 Content-Type을 image/... 로 전송하면 현재 구조에서는 S3 업로드를 허용하게 될 것 같아요. Content-Type만 믿으면 안될 것 같고, 추가적인 검증이 필요한 부분 같습니다.
물론 어떻게 검증할지는 좀 더 생각해봐야 하겠지만요!
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.
추가로 StringUtils.getFilenameExtension() 메서드를 사용하면 확장자를 추출하는 현재 메서드는 제거할 수 있겠습니다!
StringUtils.getFilenamExtension(filename);
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.
요청 헤더는 충분히 조작될 수 있지 않을까요?
이건 당장 생각이 나지 않아서 별도 이슈에서 작업하면 좋겠네요. #620
추가로 StringUtils.getFilenameExtension() 메서드를 사용하면 확장자를 추출하는 현재 메서드는 제거할 수 있겠습니다!
반영 완료
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.
확장자 부분 잘 이해가 안갔어요. 제가 놓친 도메인 규칙이 이씅ㄹ까용?
int dotIndex = fileName.lastIndexOf("."); | ||
|
||
if (dotIndex == -1) { | ||
return ""; |
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.
확장자 없는 경우 포함하고 이미지에 관련한 확장자가 아닐 경우에도 예외 주면서 막아야되지 않나요?
.contentType("image/jpg") | ||
.contentType(contentType) |
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.
https://www.iana.org/assignments/media-types/media-types.xhtml#image
순수한 궁금증.. image/jpg 라는 MIME 타입은 없는데 그동안 어떻게 동작하고 있던걸까요..?
자동으로 image/jpeg로 변환되는걸까요?
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.
그러게요 ㄷ ㄷ ㄷ
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.
확장자가 없이 이미지가 오는 경우는 거의 없다고 보고, 이미지에 관련된 확장자가 아닐 경우도 MIME로 막고있는 것으로 보아 approve합니다
추정)MIME의 타입은 파일의 확장자로 자동으로 된다!?
int dotIndex = fileName.lastIndexOf("."); | ||
|
||
if (dotIndex == -1) { | ||
return ""; |
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.
요청 헤더는 충분히 조작될 수 있지 않을까요?
multipart 구조를 보면 각각의 파트는 고유의 Content-Type을 가집니다.
만약 악성 파일의 Content-Type을 image/... 로 전송하면 현재 구조에서는 S3 업로드를 허용하게 될 것 같아요. Content-Type만 믿으면 안될 것 같고, 추가적인 검증이 필요한 부분 같습니다.
물론 어떻게 검증할지는 좀 더 생각해봐야 하겠지만요!
int dotIndex = fileName.lastIndexOf("."); | ||
|
||
if (dotIndex == -1) { | ||
return ""; |
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.
추가로 StringUtils.getFilenameExtension() 메서드를 사용하면 확장자를 추출하는 현재 메서드는 제거할 수 있겠습니다!
StringUtils.getFilenamExtension(filename);
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.
👍
이슈
개발 사항
.jpg
이외의 이미지 업로드 가능example.jpeg
->6f4914d3-144d-4e0c-8859-d0b8ff7d0120.jpeg
image/
로 시작하는지 판단한다 참고링크전달 사항 (없으면 삭제해 주세요)