언어/Java

[Java] 파일 업로드 취약점

antoroong 2025. 2. 16. 00:36

목적

내가 허용한 파일확장자 외에는 업로드할 수 없으며,

.jpg.exe라는 파일이름으로 가장할 수도 있다 이것을 막아야한다

 

 

 

//파일업로드 취약점 수정
			for(int i=0 ; i<fileFileName.toArray().length ; i++) {
				
				String fileName = getFileFileName().get(i);
				int lastIndex = fileName.lastIndexOf(".");
				String etc = fileName.substring(lastIndex+1);
				String onlyFileName = fileName.substring(0, lastIndex);
				System.out.println("파일 이름 길이 .전까지:"+lastIndex);
				System.out.println("파일 확장자:"+etc);
				System.out.println("파일 이름:"+onlyFileName);
				
//pdf. gif, jpg, png만 허용한다 
//그 중에서도 . 또는 ; 하나가 더 있거나 라면 에러를 보낸다 .jpg.exe라는 파일이름으로 
들어올 수도 있기 때문
				if(fileName.toLowerCase().endsWith(".pdf")||fileName.toLowerCase().endsWith(".gif")||fileName.toLowerCase().endsWith(".png")||
						   fileName.toLowerCase().endsWith(".jpg")){
					if(onlyFileName.contains(".") || onlyFileName.contains(";") || etc.length() == 0 || onlyFileName.contains("..")){
						System.out.println("첨부파일 등록 시, 허용되지않는 문자가 포함돼있습니다.");

					return ERROR;
					}
				}else{
						System.out.println("내가 지정한 확장자가 아님");
					return ERROR;
				}
			
			}