/file_extension_blocker

과제 - 파일 확장자 차단 과제

Primary LanguageJava

file_extension_blocker

파일 확장자 차단 과제 - 장영지


✅ 과제 설명


어떤 파일들은 첨부시 보안에 문제가 될 수 있습니다.. 특히 exe, sh 등의 실행파일이 존재할 경우 서버에 올려서실행이될수있는위험이있어파일확장자차단을하게되었습니다.

🧰 사용 기술


Java 17
Sprint Boot
Spring Data JPA
MySQL
H2
Thymeleaf

📄 요구 사항


1-1. 고정 확장자는 차단을 자주하는 확장자를 리스트이며, default는 unCheck되어져 있습니다.
1-2. 고정 확장자를 check or uncheck를 할 경우 db에 저장됩니다. - 새로고침시 유지되어야합니다. (아래쪽 커스텀 확장자에는 표현되지 않으니 유의해주세요.)

2-1. 확장자 최대 입력 길이는 20자리
2-2. 추가버튼 클릭시 db 저장되며, 아래쪽 영역에 표현됩니다.

3-1. 커스텀 확장자는 최대 200개까지 추가가 가능
3-2. 확장자 옆 X를 클릭시 db에서 삭제

💡 추가 고려사항 및 개선 사항


추가 고려사항

  • data.sql 파일을 추가하여 어플리케이션 실행시 초기 데이터로 고정 확장자 정보가 저장되도록 구현하였습니다.
  • 커스텀 확장자 추가시 고정 확장자에 존재하는 확장자명인지, 이미 존재하는 커스텀 확장자인지 검증 후 추가됩니다.
  • 커스텀 확장자는 현재 영문자만 저장 가능합니다.
  • 동일한 확장자 중복체크를 위해 입력 데이터는 모두 소문자로 저장됩니다.
  • custom exception을 구현하여 가능한 개발자가 예외상황을 통제할 수 있도록 구성하였습니다.

개선 사항

  • 화면 호출이 익숙치않아 layer를 완벽하게 구현하지 못하였습니다.
  • 현재 check box 선택 후 고정버튼을 눌러야 고정이 되도록 구현되었지만 별도의 버튼없이 check를 한 즉시 이벤트를 통해 db에 저장되도록 개선할 예정입니다.

🖥️ 화면 구성


스크린샷 2023-05-13 오전 4 56 00