파

[php] 파일업로드 확장자 체크하기


자주필요한것 같아서 올려봅니다.



파일 업로드시 php 나 html 등 위험한 파일은 보통 제한하게 됩니다. 그래서 다양한 방법으로 허용가능 파일인지 체크 스크립트를 작성해 주는데, 문제는 잘못된 체크방법으로 개발자도 모르는 우회하여 파일을 업로드됩니다.

예제 (ex #1
 <?php  
 $filename 
= "test.php."; 
 $ext = array_pop(explode(".", strtolower($filename)));

 if(@ereg($ext, "php|php3|php4|htm|inc|html")){ 
        echo 
"죄송합니다. php, html 파일은 업로드가 제한됩니다."; 
 } 
 ?>

아무 문제가 없어 보이지만, 실은 php. 나 htm. gif. 등 모두 실행 가능한 파일임을 알아 둘 필요가 있습니다. 그러므로 다음 같이 한번더 체크해서 공격자가 우회하지 못하게 해주는게 좋습니다.

예제 (ex #2
 <?php  
 $filename 
= "test.gif.bmp.php."; 
 $ext = explode(".", strtolower($filename)); 

 $cnt = count($ext)-1; 
 if(
$ext[$cnt] === ""){ 
    if(@
ereg($ext[$cnt-1], "php|php3|php4|htm|inc|html")){ 
        echo 
"죄송합니다. php, html 파일은 업로드가 제한됩니다."; 
    } 
 } else if(@
ereg($ext[$cnt], "php|php3|php4|htm|inc|html")){ 
        echo 
"죄송합니다. php, html 파일은 업로드가 제한됩니다."; 
 } 
 ?>
|

댓글 2개

파일 업로드시 확장자만 체크 하는것 말고
좀더 보안을 강화 할 수 있는 방법 없을 까요??
확장자 체크는 그냥 확장자만 바꾸면 되는 일인지라.
그렇다면 mime type을 체크하면 될거 같습니다.
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
12-08-29 조회 4,173
12-08-07 조회 3,835
12-08-03 조회 3,644
12-07-31 조회 3,752
12-07-30 조회 3,705
12-07-16 조회 3,901
12-07-15 조회 3,736
12-07-07 조회 3,599
12-07-06 조회 3,805
12-07-03 조회 3,758
12-06-29 조회 3,371
12-06-22 조회 3,743
12-06-17 조회 4,004
12-05-21 조회 3,927
12-05-02 조회 3,450
12-05-02 조회 4,245
12-05-02 조회 3,368
12-04-30 조회 3,563
12-04-30 조회 3,245
12-03-17 조회 4,113
12-03-10 조회 3,441
12-03-08 조회 3,967
12-03-03 조회 3,681
12-02-27 조회 5,096
12-02-17 조회 4,387
12-02-16 조회 4,672
12-02-03 조회 3,336
12-01-31 조회 3,247
12-01-24 조회 3,243
12-01-17 조회 3,948
12-01-05 조회 3,494
11-12-30 조회 3,224
11-12-23 조회 4,780
11-12-08 조회 3,547
11-12-07 조회 4,506
11-11-27 조회 3,934
11-11-25 조회 4,262
11-11-23 조회 3,704
11-11-22 조회 3,562
11-11-09 조회 3,274
11-10-23 조회 3,212
11-10-19 조회 3,169
11-10-08 조회 2,848
11-10-04 조회 2,848
11-10-04 조회 5,310
11-09-01 조회 4,386
11-08-13 조회 2,562
11-08-06 조회 3,246
11-07-11 조회 3,639
11-06-27 조회 2,998
11-06-21 조회 2,662
11-06-13 조회 2,473
11-06-07 조회 2,481
11-05-26 조회 2,437
11-04-20 조회 2,766
11-03-21 조회 2,864
11-03-18 조회 2,559
11-03-11 조회 2,578
11-02-07 조회 2,406
11-01-18 조회 2,728
11-01-12 조회 2,451
11-01-06 조회 2,540
10-12-10 조회 2,803
10-12-09 조회 2,652
10-12-08 조회 5,084
10-11-29 조회 2,919
10-11-28 조회 2,828
10-11-28 조회 2,657
10-11-19 조회 2,848
10-11-04 조회 2,724
10-10-21 조회 2,448
10-10-19 조회 3,410
10-10-12 조회 2,731
10-10-07 조회 2,567
10-09-30 조회 3,522
10-09-17 조회 3,934
10-09-17 조회 3,878
10-05-31 조회 3,585
09-12-31 조회 3,723
09-07-23 조회 5,048
08-09-16 조회 3,250
08-09-06 조회 2,992
08-09-04 조회 3,414
08-08-16 조회 4,442
08-08-15 조회 3,314
08-08-14 조회 4,529
08-08-12 조회 3,996
08-07-23 조회 2,814
08-07-10 조회 3,763
08-07-04 조회 2,992
08-06-27 조회 7,631
08-06-19 조회 4,939
08-05-27 조회 5,543
08-05-25 조회 5,379
08-05-23 조회 3,456
08-05-23 조회 4,621
08-05-21 조회 4,971
08-05-20 조회 4,085
08-05-20 조회 3,312
08-04-18 조회 4,383