Click or drag to resize

위험 파일 검사

5.1 버전에 추가된 CheckUnsafeFileType 메서드와 CheckRunnableFile 메서드를 사용해 시스템 및 사용자에게 위험 가능성이 있는 스크립트 파일 및 실행 파일을 차단할 수 있습니다. 백신 서비스를 사용하지 않고 파일 확장자와 파일 포맷 분석을 사용해 위험한 파일을 찾아 냅니다.

검사 방법

Upload.Start 메서드는 업로드된 데이터를 받아 임시 파일 형태로 저장하고 있습니다. Save 메서드를 호출해 완전히 저장하기 전 위험 파일을 검출할 수 있습니다.

  1. Open 메서드를 사용해 VirusChecker 서비스와 연결합니다.

  2. 서비스와의 연결에 성공하면 CheckUnsafeFileType 메서드와(또는) CheckRunnableFile 메서드를 사용해 검사를 진행합니다.

  3. 검사가 끝나면 Close 메서드를 호출해 VirusChecker 서비스와의 연결을 종료합니다.

  4. 위험한 파일이 검출되면 저장하지 않습니다.

ASP
Dim Upload, upFile
'업로드를 처리할 오브젝트를 생성합니다.
Set Upload = Server.CreateObject("TABSUpload4.Upload")

'업로드를 시작합니다.
Upload.Start "C:\TEMP"

Dim vc, found, foundName
Set vc  = Server.CreateObject("TABSUpload4.VirusChecker")
If vc.Open(19978) Then
    Set upFile = Upload.Form("uploadFile")
    '확장자 검사를 통해 위험한 파일을 검색합니다.
    vc.CheckUnsafeFileType upFile, found, foundName
    If found Then
        Response.Write "위험한 " & foundName & " 파일이 검출되었습니다."
    Else
        '윈도우 PE 포맷 검사를 통해 실행 파일을 찾습니다.
        vc.CheckRunnableFile upFile, found, foundName
        If Found Then
            Response.Write "실행 가능한 " & foundName & " 파일이 검출되었습니다."
        Else
            Response.Write "위험한 스크립트 파일 또는 실행 가능한 파일이 발견되지 않았습니다."
            '검출되지 않을 경우 파일을 저장합니다.
            upFile.Save
        End If
    End If
    vc.Close
End If

CheckUnsafeFileType 메서드는 업로드된 파일의 확장자를 검사해 스크립트 파일 또는 실행 파일인지 여부를 검사합니다. 업로드된 파일이 zip 파일과 같은 압축 파일일 경우 압축 파일에 포함된 파일 목록을 추출한 후 확장자 검사를 진행합니다.

위험 가능성이 있는 확장자는 tabservice5.ini 파일에서 vcsystem 영역에 아래와 같이 정의되어 있습니다. 확장자를 추가하거나 삭제할 수 있으며 .ext 형식으로 정의하고 확장자 사이에 ;을 입력해 구분합니다.

tabservice5.ini
[vcsystem]
vc_unsafe=.ade;.adp;.bat;.chm;.cmd;.com;.cpl;.exe;.hta;.ins;.isp;.jar;.js;.jse;.lib;.lnk;.mde;.msc;.msi;.msp;.mst;.nsh .pif;.scr;.sct;.shb;.sys;.vb;.vbe;.vbs;.vxd;.wsc;.wsf;.wsh;

CheckRunnableFile 메서드는 업로드된 파일의 바이너리 포맷을 검사해 윈도우 PE 형식인지 여부를 확인합니다. PE 형식은 윈도우 실행 파일 포맷입니다. 업로드된 파일이 압축 파일일 경우 PE 형식 검사를 위해 압축 파일을 해제합니다. 압축 파일이 클 경우 압축 해제 작업으로 인해 많은 서버 리소스가 사용될 수 있습니다. 위 예제는 빠른 검사가 가능한 CheckUnsafeFileType을 먼저 호출하고 부하가 많은 CheckRunnableFile은 나중에 호출하는 방식을 사용합니다.