web
파일 업로드 고려사항
datajoy
2020. 1. 29. 00:53
고려사항
고려사항 | 내용 |
파일크기 | |
파일명 길이 |
windows 기준 260자 너무 길 경우, SQL Injection / XSS 공격에 취약. |
파일 확장자 |
악성 스크립트(.asp .jsp .php) or 실행파일(exe)를 업로드하여 시스템 구조 확인/시스템 명령 실행이 가능. 우회 방법으로는 test.asp.kr / test.asp. / test.aSp [대응방법] 파일명은 전체 검사를 원칙으로 함. 확장자를 분리할 경우 ( . ) 조건문자 마지막 확장자를 검사한다. whitelist를 관리하여 허용하는 확장자 외 모두 차단한다. blacklist로 관리할 경우 확장자명을 소문자로 치환후 검사한다. |
파일명 |
보안 취약점 XSS Filename injection SQL Filename injection [대응방법] 영문/한글/숫자 가능 특수문자 제한 : 특수문자는 파일업로드 시 보안적인 이슈로 보수적으로 잡기위해 : whitelist로 "-", "_" 만 사용 가능하도록 함. : windows기준( < > \ | : * ? " ) |
파일명 중복 업로드 시 |
영문 대소문자 구분없이 중복체크.(ex) Test.jpg = test.jpg) [중복 시 대응] 복사파일생성 : 파일명에 index 추가.(ex) test.jsp 존재 시, test(1).jsp) override : 기존 파일 삭제 후 저장. overwrite : 기존 파일 존재할 경우 덮어쓰기. |
히스토리 관리여부 |
관리하지 않음. |
특수문자 제한이유
- ";(세미콜론)" : 윈도우에서 세미콜론은 종단문자로써 확장자명을 우회하여 실행가능.(ex)test.asp;.jpg)
- "<, >, /" : XSS 공격가능. (ex) <script>alert("테스트");</script>.jpg)
- "*, ?" : SQL Injection 공격가능. (ex) SELECT * FROM TALBE WHERE ID = ?.jpg )
- "%" : 리눅스에서 %00, %zz는 종단문자로써 확장자명을 우회하여 실행가능.(ex)test.jsp%00.jpg)