728x90
1. 첨부파일 공격에 대비하기 위한 업로드 파일의 확장자 제한
- js로 파일 사이즈나 .exe, .zip 등의 파일을 확인할 수 있는 체크함수 만들기
- var regex = new RegExp("(.*?)\.(exe|sh|zip|alz)$");
- formData에 데이터 추가하면서 체크함수로 파일 확인
2. 동일한 이름으로 파일이 업로드 됐을 때 기존 파일이 사라지는 문제
- 중복된 이름의 파일 처리
- 중복이 발생할 가능성이 거의 없는 문자열 생성해서 처리(시간을 밀리세컨드로 저장, UUID 적용 등)
- UUID(Universally Unique Identifier) : 네트워크 상에서 고유성이 보장되는 id를 만들기 위한 표준 규약
- UUID uuid = UUID.randomUUID();
- String uploadFileName = uuid.toString() + "_" + multipartFile.getOriginalFilename();
- 한 폴더 내 너무 많은 파일 생성
- 년/월/일 단위의 폴더를 생성해서 저장
- 컨트롤러에 년/월/일 폴더를 한번에 만들 메서드 정의
- 년/월/일 단위의 폴더를 생성해서 저장
private String getFolder(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String str = sdf.format(date);
return str.replace("-", File.separator);
}
3. 이미지 파일의 경우에 원본 파일의 용량이 큰 경우 섬네일 이미지 생성 문제
- thumbnailator 라이브러리 추가
- 컨트롤러에서
- 업로드된 파일이 이미지 종류의 파일인지 확인하는 체크함수 만들기
- 이미지 파일인 경우, 섬네일 이미지 생성하고 저장하기
if(checkImageType(saveFile)){
FileOutputStream thumbnail = new FileOutputStream(new File(uploadPath, "s_" + uploadFileName));
Thumbnailator.createThumbnail(multipartFile.getInputStream(), thumbnail, 100, 100);
thumbnail.close();
}
728x90
'Spring' 카테고리의 다른 글
[Spring] WAS가 도대체 뭔데? (1) | 2024.04.11 |
---|---|
[Spring] WebApplicationInitializer.java & ServletContextListener.java (0) | 2024.03.22 |
[Spring] @Retention (0) | 2024.03.20 |
[SQL] 데이터가 없으면 INSERT, 있으면 UPDATE (같은 데이터 중복 삽입 해결) (1) | 2024.01.24 |
Springboot 페이징 (0) | 2024.01.16 |