sub_title
 ASP
제   목 ASP 파일 확장자 제한하기
작성자 웹마당넷 등록일 2009-02-22 20:11:59 조회수 226,129

[ASP 파일 확장자 제한하기]

업로드 파일의 확장자 제한은 보안상의 이유로 반드시 처리 해줘야 하는 부분이며, 처리 방법도 아주 쉽습니다. 파일명에서 확장자만 분리한 후 허용되는 확장자 타입과 비교해서 아닐경우 업로드 되지않게 처리해 주시면 끝입니다.

파일명에서 확장자만 분리하거나, 파일전체 경로에서 파일명만 분리하기 위해서는 InstrRev 함수를 사용하면 편리합니다. 확장자만 구해오기 위해서는 right 함수를 이용해서 뒤에서 3개의 문자만 잘라오는 방법을 사용할 수도 있지만 파일전체 경로에서 파일명만 분리해 오기 위해서는 InstrRev 함수를 사용하는 것이 제 격입니다.
(※도스(dos)처럼 파일명이 8.3으로 픽스된 것이 아니기 때문에 뒤에서 3개의 문자를 확장자라 단정 지을수 없습니다.)  

InstrRev(문자열1, 문자열2)

InstrRev 함수는 문자열1에서 문자열2가 포함되는 마지막 위치를 반환합니다. 없을 때에는 0을 반환 합니다.

1. 파일명에서 확장자 분리하기

fileType = Mid(fileName, InStrRev(fileName, ".") + 1)

위의 코드는 fileName이라는 파일명을 담고 있는 변수에서 확장자만 분리하여 fileType 변수에 저장하는 코드입니다. 쉽게 말해서 파일명에서 확장자만 분리해 filtType 변수에 저장하는 코드로 결과는 아래와 같이 fileType에 fileName의 확장자만 저장됩니다.

fileName = "test.asp"
fileType = "asp"


2. 파일전체 경로에서 화일명만 분리하기

fileName = Mid(filePath, InstrRev(filePath, "\")+1)

위의 코드는 filePath에서 파일명만 분리해서 fileName에 저장하게 됩니다. 결과는 아래와 같이 파일전체 경로에서 파일명만 분리되서 fileName 변수에 저장됩니다.

filePath = "c:\inetpub\testsite\test.asp"
fileName = "test.asp"


파일명에서 파일 확장자를 분리하는 것이 걸어가다 껌하나 꺼내 씹는 것보다 쉽다는 것을 알았으니 본격적으로 업로드된 파일 확장자를 제한하는 코드를 작성해 보겠습니다.

우리는 웹서버에 업로드될 경우 고약한 코드를 실행할 수 있는 asp, php, jsp, aspx, cgi, exe 파일의 확장자를 제한하는 예제를 만들어 보겠습니다.

가장 쉬운 코드는 If문을 이용해서 제한할려는 확장자와 하나하나 직접 비교하는 방법이겠지만 이 방법은 너무 유치하다고 느껴질수도 있습니다.

※ split 함수를 이용하는 방법

<%

   fileName = "test.asp"
   fileType = Mid(fileName, InStrRev(fileName, ".") + 1)

   notUpType = "asp,php,jsp,aspx,cgi,exe" '업로드가 허용 안돼는 파일타입

   arrFileType = Split( notUpType, "," ) 'Split함수를 이용해 문자열을 구분자로 분리해 배열에 담습니다.

   For i = 0 To Ubound(arrFileType)
         If UCase(fileType) = UCase(arrFileType(i)) Then 'UCase함수를 이용해 대분자로 변환해서 비교합니다.
              notUpChk = True
         End If
   Next

   If notUpChk = True Then
      Response.Write"<font color='#FF0000'>업로드할 수 없는 파일입니다.</font>"
      Response.end
   Else
      Response.Write"업로드할 수 있는 파일입니다."
   End If

%>


※ 정규식을 이용하는 방법

정규식을 이용하는 방법에서 우리는 아래와 같은 정규표현식을 이용해서 파일의 확장자를 제한할 것입니다.
^(asp|php|jsp|aspx|cgi|exe)$

위의 정규 표현식을 간단하게 설명드리자면

'^' 는 뒤의 문자열로 시작한는 모든 문자열 가르킵니다.
'()'는 안에 있는 문자열을 그룹화 합니다.
'|' 는 OR 연산자로 asp|php 라고하면 asp나 php를 포함하는 문자열을 의미합니다.
'$' 는 문자열의 마지막을 가리키며, 그 뒤의 문자열은 더 이상 포함되지 않습니다.

<%

   fileName = "test.asp"
   fileType = Mid(fileName, InStrRev(fileName, ".") + 1)

   notUpType = "^(asp|php|jsp|aspx|cgi|exe)$" '업로드가 허용 안돼는 파일타입의 정규표현식

   patternStr = notUpType
   Set re = New RegExp 'RegExp 객체를 생성합니다.
   re.Pattern = patternStr
   re.IgnoreCase = true '대소문자 구분을 하지 않도록 합니다.
   re.Global = True '전체 문자열을 검색합니다.

   notUpChk = re.test(fileType)

   If notUpChk = True Then
      Response.Write"<font color='#FF0000'>업로드할 수 없는 파일입니다.</font>"
      Response.end
   Else
     Response.Write"업로드할 수 있는 파일입니다."
   End If

%>

위의 파일 확장자를 제한하기 위한 너덜너덜한 예제는 함수로 만들어 사용하시면 더욱 효율적이고 좋습니다. 함수로 한번 만들어 보시기 바랍니다.

자바스크립트를 이용한 파일 확장자 제한하기 #1

자바스크립트를 이용한 파일 확장자 제한하기 #2

 

작성자: 웹마당넷(webmadang@webmadang.net)   http://www.webmadang.net
 
4
    
 
0
        list
 
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
line
reply cancel
 
번호 제목 글쓴이 추천 조회 날짜
81  ASP 파일의 존재유무를 체크하여 존재하면 삭제하기   member 오렌지 2 / 0 221866 2010-01-23
80  ASP - 정규식을 이용한 html 태그 제거 함수   member 오렌지 0 / 0 210248 2009-02-25
79  ASP 파일 확장자 제한하기   admin 웹마당넷 4 / 0 226129 2009-02-22
78  ASP - BASE64 인코딩 디코딩 함수 첨부파일   member 오렌지 2 / 1 229191 2009-02-06
77  ASP로 다국어(UTF-8) 지원 사이트 개발   admin 웹마당넷 0 / 0 214080 2009-01-27
76  ASP를 사용하여 SSL 요구   member 웹스톤 0 / 0 208133 2009-01-12
75  ASP용 MD5 함수 첨부파일   member 티란투라 0 / 0 219571 2009-01-07
74  ASP 로그인시 로그기록을 남기는 예제 첨부파일   admin 웹마당넷 0 / 0 215929 2009-01-04
73  ASP SQL 인젝션 방어와 복구   member 억새풀 0 / 0 215574 2008-12-26
72  ASP에서 REFERER 를 이용한 페이지 직접 접근 막기   member 억새풀 1 / 0 292729 2008-12-23
71  ASP 자동링크 함수   member 웹스톤 0 / 0 214883 2008-12-16
70  ASP 영문으로된 월 이름(Month Name) 구하기   admin 웹마당넷 0 / 0 211213 2008-12-09
69  ASP 문장 연결 표시(line continuation)   admin 웹마당넷 0 / 0 212271 2008-12-08
68  ASP 이름이 같은 폼태그(Form Tag)의 값(value) 처리하기   admin 웹마당넷 0 / 0 219344 2008-12-05
67  ASP OBJECT 태그를 이용한 OLEDB 연결   admin 웹마당넷 4 / 1 223617 2008-11-12
66  ASP 로그인(Login) 처리 예제 (OLEDB) 첨부파일   admin 웹마당넷 0 / 0 242837 2008-10-10
65  ASP 검색 페이지에서 검색된 문자열의 색깔 바꾸기   admin 웹마당넷 0 / 0 208396 2008-10-03
64  ASP 로그인(Login) 처리 예제 (ODBC) 첨부파일   admin 웹마당넷 0 / 0 244788 2008-10-02
63  ASP에서 XML 파일 읽어들이기   admin 웹마당넷 0 / 0 211984 2008-09-25
62  ASP 세션(Session)에 배열 저장하기   admin 웹마당넷 0 / 0 208418 2008-09-24
61  ASP For Each Next 순환문을 이용한 선택된 체크박스의 값 알아내기 첨부파일   admin 웹마당넷 1 / 0 236407 2008-09-23
60  ASP에서 날짜, 요일구하기   admin 웹마당넷 0 / 0 234699 2008-09-20
59  asp 페이지를 유니코드(unicode)로 출력하기   member 웹스톤 0 / 0 215090 2008-09-20
58  [ASP] 사이트 링크의 유효성 검사   member 다자래 0 / 0 206118 2008-08-22
57  [ASP] 퀵정렬   member 다자래 0 / 0 213894 2008-08-20
write
[2] [3] [4] button