티스토리 뷰

확장자가 분명한 곳, 예를 들어 이미지 파일이나 엑셀 등은 통제하기 어렵지 않습니다. 

그러나 게시판이나 이메일 첨부파일에는 허용하는 파일보다 허용하지 않는 파일을 통제해야 하는 경우도 있습니다. 

실행 파일 확장자 

확장자 내용
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);
}

 

 

참고

aerorock.co.nz/list-of-executable-file-extensions-windows/

댓글
댓글쓰기 폼