Skip to content
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

[개선] AWS S3 Presigned URL 파일 형식, 크기 제한 #173

Open
cabbage16 opened this issue Feb 7, 2025 · 0 comments
Open

[개선] AWS S3 Presigned URL 파일 형식, 크기 제한 #173

cabbage16 opened this issue Feb 7, 2025 · 0 comments
Assignees
Labels
개선 코드 리팩토링

Comments

@cabbage16
Copy link
Member

cabbage16 commented Feb 7, 2025

🙌 개선 방향

현재는 사용자가 업로드하는 증명사진, 원서 파일들을 클라이언트에서만 검증하고 있으므로 Presigned URL에 직접 악성 파일을 업로드하는 것을 바꿀 수 없습니다. 따라서 서버에 파일을 업로드하지 않으면서도, 파일을 검증할 수 있도록 해야합니다.

💻 코드

private GeneratePresignedUrlRequest getGeneratePresignedUrlRequest(String contentName,
        Long contentSize) {
        GeneratePresignedUrlRequest generatePresignedUrlRequest =
            new GeneratePresignedUrlRequest(bucket, contentName)
                .withMethod(HttpMethod.PUT)
                .withExpiration(getExpirationDate());

        generatePresignedUrlRequest.addRequestParameter(
            Headers.S3_CANNED_ACL,
            CannedAccessControlList.PublicRead.toString()
        );

        generatePresignedUrlRequest.putCustomRequestHeader(
            Headers.CONTENT_LENGTH,
            String.valueOf(contentSize)
        );
        
        generatePresignedUrlRequest.putCustomRequestHeader(
            Headers.CONTENT_TYPE,
            ALLOWED_CONTENT_TYPE.get(getFileExtension(contentName))
        );

        return generatePresignedUrlRequest;
    }

🏄‍♂️ 참고 자료

https://velog.io/@eple/Presigned-Url%EB%A1%9C-%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%A1%9C%EB%93%9C%ED%95%A0-%EB%95%8C-%ED%99%95%EC%9E%A5%EC%9E%90-%EC%9A%A9%EB%9F%89%EC%9D%84-%EC%A0%9C%ED%95%9C%EC%8B%9C%ED%82%A4%EC%9E%90

https://velog.io/@invidam/S3-Presigned-Url-%EB%8F%84%EC%9E%85%ED%95%98%EA%B8%B0

@cabbage16 cabbage16 added the 개선 코드 리팩토링 label Feb 7, 2025
@cabbage16 cabbage16 self-assigned this Feb 7, 2025
cabbage16 added a commit that referenced this issue Feb 9, 2025
- 파일 다운로드만 필요한 경우 업로드 URL 생성 로직 없이 다운로드 URL만 생성하도록 성능을 개선했습니다.
cabbage16 added a commit that referenced this issue Feb 9, 2025
- 증명사진, 원서 파일, 입학등록원 및 금연 서약서, 공지사항 파일을 업로드할 때 메타데이터를 전송하여 파일의 형식 및 크기를 검증할 수 있도록 하였습니다.
- 전송한 메타데이터와 다른 파일을 보낼 경우 S3 Bucket에서 차단하도록 Presigned URL을 개선했습니다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
개선 코드 리팩토링
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant