TABS Upload 5

> 탭스 업로드

주요 기능 II

ClamAV 엔진 지원

ClamAV 백신의 데몬과 직접 통신해서 바이러스를 검사하므로 시스템 부담없이 빠르게 악성 코드를 검출할 수 있습니다.

ClamAV는 오픈소스 기반의 백신으로 추가 비용없이 바이러스 검사 기능을 지속적으로 사용할 수 있습니다.

Microsoft 백신 엔진 지원

Microsoft가 제공하는 Microsoft Security Essentials 또는 System Center Endpoint Protection 백신을 사용해 업로드되는 파일에 대한 보안 검사를 진행할 수 있습니다. 시스템에 대한 기본 방역 기능과 함께 사용할 수 있습니다.

Windows Server 2016부터 서버용 Microsoft 백신 엔진이 Windows Defender라는 이름으로 기본 탑재되었습니다. 이 기능을 이용해 업로드되는 파일에 대해 악성 코드 검사를 할 수 있습니다.

ClamAV 백신에 비해 신종 바이러스에 대한 빠른 업데이트가 보장되므로 보다 안전한 업로드 환경을 구축할 수 있습니다.

Avast 엔진 지원

Avast Windows 서버 백신과 연동해 바이러스를 검사합니다. 신종 바이러스에 대한 빠른 업데이트가 보장되고 스크립트 기반의 바이러스를 보다 정확하게 찾아냅니다.

추가로 구매를 해야 하는 유료 서버 백신으로 Windows 서버에 대한 기본적인 방역 기능이 가능합니다. 1년 단위 라이선스를 체결해야 지속적으로 업데이트 받을 수 있습니다.

안정적인 바이러스 검사 모델 제공

바이러스 검사 부분을 IIS와 완전히 분리해 운영하므로 안티 바이러스 프로그램과의 충돌 없이 안정적인 서비스 환경을 제공합니다.

바이러스 패턴 데이터 부분이 IIS와 분리되므로 IIS의 메모리 부담과 성능 저하 없이 바이러스 검사 기능을 사용할 수 있습니다.

바이러스 검사 예제 코드

서버로 업로드된 파일을 최종 저장소에 저장하기 전에 바이러스 감염 여부를 검사하는 예제입니다.

'업로드를 처리할 오브젝트를 생성합니다.
Set Upload = Server.CreateObject("TABSUpload4.Upload")
'업로드를 시작합니다.
Upload.Start "C:\TEMP"

Set Vc = Server.CreateObject("TABSUpload4.VirusChecker")
If Vc.Open(19978) Then
	Set UpFile = Upload.Form("uploadFile")

	Response.Write UpFile.TmpFileName & "을 검사합니다."
	Vc.CheckVirus UpFile.TmpFileName, true, Found, VirusName
	Vc.Close

	If Found Then
		Response.Write VirusName & " 바이러스가 검출되었으며 파일은 자동 삭제되었습니다."
	Else
		Response.Write "바이러스가 존재하지 않는 안전한 파일입니다."
        '안전한 파일을 저장합니다.
		UpFile.Save "D:\UploadFiles", False
	End If
Else
	Response.Write "바이러스 검사 서비스에 연결할 수 없습니다."
    Response.Write "윈도우 서비스 관리 도구를 사용해서 해당 서비스를 실행시키십시오."
End If

다양한 파일 포맷을 인식

이미지 파일 형식, 마이크로소프트 오피스 문서 형식, 한글 문서 형식, 압축 파일 형식, 동영상 파일 형식 등을 해석해서 형식 정보를 반환합니다.

업로드된 파일을 서버로 저장하기 전에 파일 형식을 검사할 수 있도록 Upload.Form 오브젝트에 Format 프로퍼티를 제공합니다.

검사 가능한 포맷

포맷 종류
지원되는 포맷
이미지 파일 포맷
GIF, BMP, PNG, JPEG, TIFF
윈도우 실행 파일 및 런타임 모듈
EXE, DLL, SCR 등
문서 파일 포맷
XLS, PPT, DOC, RTF, XLSX, PPTX, DOCX, HWP, PDF
압축 파일 포맷
ZIP, RAR, 7Z, CAB, ALZ
기타
PSD, DWG, SWF, JAR

파일 형식 검사 예제 코드

액셀 파일만 서버로 업로드 가능하도록 제한하는 예제입니다. 파일 확장자를 검사하는 것이 아닌 파일 내용을 분석해 엑셀 파일인지 여부를 검사합니다.

'업로드를 처리할 오브젝트를 생성합니다.
Set Upload = Server.CreateObject("TABSUpload4.Upload")
'업로드를 시작합니다.
Upload.Start "C:\TEMP"

Set UpFile = Upload.Form("uploadFile")
If UpFile.Format.Name = "xls" Then
	UpFile.Save "C:\TEMP"
	'업로드된 파일 정보를 출력합니다.
	Response.Write "저장 파일 이름:" & UpFile.SaveName
	Response.Write "파일 크기:" & UpFile.FileSize
Else
	Response.Write "XLS 파일 형식이 아닙니다."
End If

메일 릴레이

MIME 형식의 메일 메시지를 생성한 후 SMTP 프로토콜을 사용해 메일 서버로 전송합니다.

텍스트 메일 및 HTML 메일을 작성할 수 있으며 한국어, 일본어, 중국어, 유니코드 인코딩을 지원합니다.

SSL/TLS 지원

ESMTP의 STARTTLS 명령을 지원해 SMTP 네트워크를 SSL로 설정할 수 있습니다. SSL은 모든 네트워크 통신을 암호화해서 컴포넌트와 메일 서버 사이에 보안 통신이 가능하게 만듭니다.

메일 주소 유효성 검사

메일 주소가 메일을 수신할 수 있는 올바른 메일 주소인지 여부를 검사할 수 있습니다.

단순한 메일 주소 문법 검사 및 도메인에 대한 DNS MX 레코드 조회, SMTP 트랜잭션 시뮬레이션을 통한 검사를 진행합니다.

메일 발송 예제 코드

보안 채널(TLS)을 통해 메일 서버로 메일 발송 요청을 하는 예제입니다.

Set Smtp = Server.CreateObject("TABSUpload4.Smtp")
'연결할 메일 서버를 지정
Smtp.ServerName = "mail.yourdomain.com"
Smtp.ServerPort = 587
Smtp.UseTLS = True
Smtp.SmtpAuthID = "account@gmail.com"
Smtp.SmtpAuthPassword = "password"

'메일 내용을 지정
Smtp.FromAddress = "help@tabslab.com"
Smtp.AddToAddr "test@hotmail.com", "테스트"
Smtp.Subject = "제목입니다."
Smtp.Encoding = "base64"
Smtp.Charset = "euc-kr"
Smtp.BodyHtml = "텍스트 본문입니다."

Set Result = Smtp.Send()
If Result.Type = SmtpErrorSuccess Then
    Response.Write "메일이 올바르게 전달되었습니다."
Else
    Response.Write "오류 종류:" & Result.Type
    Response.Write "오류 코드:" & Result.Code
    Response.Write "오류 설명:" & Result.Description
End If

강력한 암호화

과거에 사용되더 DES를 대체하는 미국 정부 표준 암호화 알고리즘인 AES를 사용해 데이터를 암호화합니다.

해시 함수 중 가장 강력한 SHA-512 기반으로 해시값을 계산합니다.

SEED 지원

SEED는 전자상거래, 금융, 무선통신 등에서 전송되는 개인정보와 같은 중요한 정보를 보호하기 위해 한국인터넷진흥원과 국내 암호전문가들이 국내기술로 개발한 블록 암호 알고리즘입니다.

128비트 SEED와 보다 더 강화된 256비트 키를 사용하는 SEED 알고리즘을 지원합니다.

텍스트 및 파일 암호화

웹 페이지 사이에서 전달되는 텍스트 데이터를 암호화해서 전달할 수 있습니다. 암호화된 데이터는 웹사이트에 대한 다양한 공격으로 부터 안전하게 데이터를 처리할 수 있는 환경을 제공합니다.

서버에 저장되어 있는 파일 혹은 서버로 업로드된 파일을 암호화해서 저장할 수 있으며 복호화해서 사용자에게 전달할 수 있습니다.

NVC 데이터 암호화

GET 방식으로 전달되는 데이터 또는 쿠키 데이터는 Name/Value 컬렉션 형태로 이루어져 있습니다. 여러 데이터를 효과적으로 전송할 수 있도록 NVC 데이터를 구성할 수 있으며 이를 암호화해 전송할 수 있습니다. 단순 암호화 외에 원본 데이터에 대한 integrity를 유지시켜주는 메커니즘을 포함하고 있으므로 데이터 위변조에 효과적으로 대처할 수 있습니다.

아래는 암호화 예제 코드입니다.

<%
Set Encryptor = Server.CreateObject("TABSUpload4.Encryptor")

'마스터 암호와 솔트 값으로 초기화합니다.
Encryptor.InitializeFromIni "C:\MyPassword.ini"

Set nvc = Server.CreateObject("TABSUpload4.NameValueCollection")
nvc.Add "id", "hong123"
nvc.Add "name", "홍길동"
nvc.Add "age", "20"

encnvc = Encryptor.EncryptNVC(nvc)
uencnvc = Server.URLEncode(encName)
%>

<a href="nextpage.asp?param= <%=uencnvc%>">다음 페이지 </a>                   
                

아래는 NVC 데이터를 복호화한 후 액세스하는 예제 코드입니다.

Set Encryptor = Server.CreateObject("TABSUpload4.Encryptor")

'마스터 암호와 솔트 값으로 초기화합니다.
Encryptor.InitializeFromIni "C:\MyPassword.ini"

On Error Resume Next
Set nvc = Encryptor.DecryptNVC(Request.QueryString("param"))
If Err.Number <> 0 Then
    '복호화 오류 발생
    Response.Redirect "accessdenied.asp"
End If

'NVC 오브젝트를 사용한 데이터 참조
id = nvc("id")
name = nvc("name")
age = nvc("age")
                

ZIP으로 압축하기

서버에 저장되어 있는 파일 또는 업로드된 파일을 압축해서 ZIP 파일을 생성할 수 있습니다.

아래는 ZIP 파일을 생성하는 간단한 예제 코드입니다.

Set zip = Server.CreateObject("TABSUpload4.ZipFile")
If zip.Create("D:\zipped\sources.zip", "") Then
    zip.AddFile "D:\Source\file1.htm"
    zip.AddFile "D:\Source\file2.htm"    
    zip.Close
End If
                

ZIP 파일에 암호를 지정해 암호화된 ZIP 파일을 생성할 수 있으며 지정된 디렉터리 이하에 있는 모든 파일을 한 번에 압축할 수 있는 기능도 함께 제공됩니다.

ZIP 파일 압축 해제

서버에 저장되어 있는 ZIP 파일 데이터를 임의의 디렉터리에 압축 해제할 수 있습니다.

아래는 ZIP 파일을 생성하는 간단한 예제 코드입니다.

Set unzip = Server.CreateObject("TABSUpload4.UnzipFile")
unzip.Unzip "D:\zip\sources.zip", "", "D:\output\data"