Click or drag to resize

업로드 크기 제한

사용자가 악의적인 목적으로 매우 큰 파일을 업로드 시킨다면 웹 서버에 부하가 가중되게 되고, 이러한 대용량 업로드를 반복적으로 시도한다면 웹 서버는 응답 불능 상태가 될 것입니다. 이러한 서비스 거부(Denial of Service) 공격을 막기 위해 TABS Upload는 업로드 크기 제한 기능을 제공합니다.

업로드 크기 제한 기능은 업로드 데이터를 모두 수신한 후 지정된 크기 이상이면 업로드 데이터를 삭제하는 방식을 사용하지 않습니다. 대신 업로드 시작시 HTTP 헤더에서 전체 전송 크기를 구한 후 지정된 크기 이상의 데이터를 업로드한다면 웹 서버에서 클라이언트와의 HTTP 연결을 강제로 종료시키는 방법을 사용합니다. 즉, 대용량 데이터 업로드를 사전에 막아 서버 부하 증가를 근본적으로 막을 수 있습니다.

웹 브라우저로 부터 업로드 데이터를 모두 수신한 후 파일 크기 제한을 처리하는 다른 업로드 컴포넌트와는 달리 TABS Upload 컴포넌트는 파일 크기 제한을 처리하기 위해 두 가지 방법 모두를 제공합니다. MaxBytesToAbort 프로퍼티를 사용해 최대 업로드 크기를 초과할 경우 강제로 연결을 종료하는 방법과 데이터를 모두 수신한 후 FileSize 프로퍼티를 사용해 파일 크기를 비교한 후 처리하는 방법을 제공합니다. 아래 예제는 이 두 방식을 복합적으로 적용한 것으로 논리적으로 최대 5M까지 파일을 업로드 가능하며 서비스 거부 공격을 막기 위해 10M 이상되는 업로드를 사전에 거부하도록 지정하였습니다.

업로드 프로그래밍

Start 메서드 호출하기 전에 MaxBytesToAbort 프로퍼티에 업로드 가능한 최대 바이트 수를 명시합니다. 지정된 크기를 초과하는 데이터를 업로드할 경우 클라이언트 연결을 강제로 종료시켜 데이터 업로드를 중지시킵니다

ASP
<%@ LANGUAGE="VBSCRIPT" %>
<html>
<head>
    <title>Upload Results</title>
</head>
<body>
<%
'업로드 컴포넌트를 생성합니다.
Set Upload = Server.CreateObject("TABSUpload4.Upload")
'업로드 가능한 최대 크기를 10MB로 제한합니다.
Upload.MaxBytesToAbort = 10 * 1024 * 1024
'업로드 데이터 처리를 시작합니다.
Upload.Start "C:\Temp"

'5M 이내의 파일만을 저장합니다.
If Upload.Form("uploadFile").FileSize < 5 * 1024 * 1024 Then
    '폼 데이터를 출력합니다.
    Response.Write Upload.Form("userName")
    '업로드된 파일을 저장합니다.
    Upload.Form("uploadFile").Save
Else
    Response.Write "최대 5M까지 업로드할 수 있습니다."
End If
%>
</body>
</html>