잡동사니/개인정보보안
[개인정보보안]업로드 파일 확장자 통제
까오기
2021. 3. 9. 17:03
확장자가 분명한 곳, 예를 들어 이미지 파일이나 엑셀 등은 통제하기 어렵지 않습니다.
그러나 게시판이나 이메일 첨부파일에는 허용하는 파일보다 허용하지 않는 파일을 통제해야 하는 경우도 있습니다.
실행 파일 확장자
확장자 | 내용 |
bat | 배치파일 |
bin | Binary Executable |
cmd | 윈도우 명령 스크립트 |
com | 명령 파일 |
cpl | 제어판 확장 |
dll | 데이터 파일 |
exe | 실행파일 |
gadget | Windows Gadget |
inf1 | Setup Information File |
ins | Internet Communication Settings |
inx | InstallShield Compiled Script |
isu | InstallShield Uninstaller Script |
job | Windows Task Scheduler Job File |
jse | JScript 인코딩 파일 |
lnk | 링크 바로 가기 |
msc | 마이크로소프트 공통 콘솔 |
msi | 윈도우즈 설치 파일 |
msp | 윈도우즈 패치 파일 |
mst | Windows Installer Setup Transform File |
paf | 휴대용 APP 설치 파일 |
pif | 프로그램 정보 파일 |
ps1 | 윈도우즈 Power shell |
reg | 레지스트리 데이터 파일 |
rgs | 레지스트리 스크립트 파일 |
scr | 스크린 세이버 실행 파일 |
sct | 윈도우즈 scriptlet |
sh | shell script |
shb | 윈도우즈 문서 바로 가기 |
shs | shell script 개체 |
u3p | U3 스마트 어플리케이션 |
vb | VBScript |
vbe | VB 인코딩 스크립트 |
vbs | VBScript |
vbscript | VBScript |
ws | windows script |
wsf | windows script |
wsh | Windows Script Preference |
실행파일이 자주 변경이 되거나 한다면 공통코드로 뽑아서 관리하면 될거 같습니다. 아래는 간단하게 하드코딩된 값으로 체크하는 함수입니다.
화면 처리 : javascript
// 결과가 true면 정상, false이면 업로드 불가.
function validateFileExt(filename) {
var extReg = /(bat|bin|cmd|com|cpl|dll|exe|gadget|inf1|ins|isu|jse|lnk|msc|msi|msp|mst|paf|pif|ps1|reg|rgs|scr|sct|sh|shb|shs|u3p|vb|vbe|vbs|vbscript|ws|wsf|wsh)$/i;
var ext = filename.substr( (filename.lastIndexOf('.') +1) );
return !extReg.test(ext);
}
서버 체크.
private static final String RUNABLE_FILE_EXT = "^(.*\\.)(?i)(bat|bin|cmd|com|cpl|dll|exe|gadget|inf1|ins|isu|jse|lnk|msc|msi|msp|mst|paf|pif|ps1|reg|rgs|scr|sct|sh|shb|shs|u3p|vb|vbe|vbs|vbscript|ws|wsf|wsh)$";
// 확장자가 실행 파일이면 true를 반환한다.
public static boolean checkRunableExtension(String fileName) {
if(fileName == null) return false;
return fileName.matches(RUNABLE_FILE_EXT);
}
참고