[ php ] php 업로드 작성 및 파일 업로드 보안문제 - 7가지 > php

본문 바로가기
사이트 내 전체검색

php

[ php ] php 업로드 작성 및 파일 업로드 보안문제 - 7가지

페이지 정보

작성자 웹지기 댓글 0건 조회 4,774회 작성일 18-09-30 18:14

본문

1.php,inc,html,htm,phtml,php3 등의 확장자는 절대로 올릴 수 없게 한다 ! 

.txt 도 못올리게 합니다. .txt 를 사용해서 쿠키를 훔칠수도 있다. 


2.업로드 디렉토리는 무조건 htdocs 아래 말고 다른 디렉토리 에 올린다 !! 

/updir 이나 c:\updir 등 htdocs 와 관련이 없는 디렉토리에 올리게 한다. !! 


3.CP명령을 사용시에 exec(cp $file , 처럼 exec() 를 절대로 사용하지 말아야 한다. 

기냥 cp()만을 사용하라 !!! 

www.php.net/cp 


4.REQUEST_METHOD!="POST" 로 체크 해서 올리기 

POST 가 아닐 경우 올리지 못하게 !!! 

form 에서 method=get 으로 절대 절대 하지 마세요 !!! 

php.ini 에서 register_globals=off 라면 

$HTTP_SERVER_VARS['REQUEST_METHOD'] 로 출력 해야 합니당..ㅋㅋㅋ 

[code]

<?php 

if ($submit) { 

    if ($REQUEST_METHOD == 'POST') { 

        // 정상 실행 

    } 

    else { 

         echo 'get 값은 받지 않아요 !!'; 

    } 

else { 

    echo '훔....잘못된 입력 !!!'; 

?> 

[/code]


5.파일명이 pass 나 shadow 나 리눅스 시스템 파일일 경우는 올리지 못하게 하기 위해 

파일명 중에 pass 나 shadow 등이 있을 경우 올리지 못하게 !!! 

그러니까 koreapass.zip 파일 같은 것도 올라가지 않겟죠 ^^ 

그래도 보안을 위해서라면 ^^ /etc/passwd 파일(리눅스 파일)의 업로딩을 방지 합니다.


그러니까 upload.php 파일을 이용하여 주소표시줄에서 

upload.php?file_name=/etc/passwd&file_type=text&file_size=30 

등으로 해서 해킹할 시스템의 passwd 파일을 자료실에 올리고 다운 받을 수 있다고 합니다. 

그래서 취한 조치 입니다. 


6.또는 file_exists($file_name) 를 사용하여 체크 합니다. 로컬시스템에 파일이 있으면 절대 못올리게 

합니다 ^^ /etc/passwd 파일의 업로딩을 방지 합니다. 


7. PHP 4.1.2 최신 버전 말고는 모두 파일 업로드 버그가 존재 한다고 합니다.

추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

Total 82건 2 페이지
  • 66 [ php ] json 배열 출력 방식에 따른 차이
  • $data = array('id' =&gt; '88', 'country' =&gt; 'Korea', 'brand' =&gt; 'Samsung, Sony'); 이와같은 값을 json_encode($data); 하면 echo json_encode($data); 다음처럼 출력 {"id":"88","country":"Korea","brand":"Samsung, Sony�...
  • 웹지기 11-06 7801 0 0 댓글 0
  • 65 [ php ] fopen() fwrite() file_put_contents, fgets(), fgetss(…
  • fopen() // http://php.net/manual/kr/function.fopen.php resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ) fopen ()은 filename으로 지정된 자원을 모드로 읽어 들입니다. filename이 "scheme : // ..."형식 인 경우 URL로 간주되며 PHP는 해당 체계에 대한...
  • 웹지기 10-30 7600 0 0 댓글 0
  • 64 [ php ] 다차원 배열 다중배열에 값 입력하기
  • [code] $aa_ary = array( aaa = array( 'TITLE'=&gt;'제목', 'GETTING STARTED'=&gt;'시작하기' ), bbb = array( 'TITLE'=&gt;'TITLE', 'GETTING STARTED'=&gt;'GETTING STARTED' ) ); print_r2($aa_ary); $aa_ary = array( array(), array(), ......
  • 웹지기 10-24 8160 0 0 댓글 0
  • 63 [ php ] $$aa, $$$aa 와 같은 형태로 푠현되는 가변변수
  • [code] &lt;?php $a = 'hello'; $$a = 'world'; echo ' ::: a ::: '.$a.' ::: $$a ::: '.${$a}; ?&gt; [/code] 이와 같은 형태의 값이 있을 때 [code] &lt;?php echo ' ::: $$a ::: '." $a $hello "; ?&gt; [/code] 와 같이 hello world를 출력 배열을 갖는 가변변수는 $$a[1] 를...
  • 웹지기 10-10 4512 0 0 댓글 0
  • 60 [ php ] 다차원 배열을 원하는 필드로 정렬하고 싶을 때
  • 데이터베이스 테이블을 모방 한 배열이 있다고 가정합니다.각 배열 요소는 행을 나타내며 각 행 내에서 필드 이름과 값을 포함하는 다른 배열입니다.[code]Array( [0] =&gt; Array ( [name] =&gt; 'Sony TV' [price] =&gt; 600.00 ) [1] =&gt; Array ( [name] =&gt; 'LG TV' [price] =&gt; 350.00 ...
  • 웹지기 10-04 3826 0 0 댓글 1
  • 59 [ php ] strstr() 문자열 함수
  • strstr() 함수는 찾고 싶은 문자를 찾은 후 그 이후 값까지 반환한다.대소문자 구분하지 않으려면 stristr() 함수를 사용하면 된다.함수의 원형은 다음과 같다.strstr() 함수 원형[code]string strstr ( string $haystack , mixed $needle [, bool $before_needle ] )[/code]인수- haystack : 입력 문자열- needle : 찾을 문자열- before_needle : 결과가 True이면(기본값은 FALSE) hayst...
  • 웹지기 10-01 5073 0 0 댓글 0
  • 58 [ php ] $_SERVER 옵션 및 사용설명
  • [code]$_SERVER['DOCUMENT_ROOT'] = 현재 사이트가 위치한 서버상의 위치 =&gt; /webapp/include$_SERVER['HTTP_ACCEPT_ENCODING'] = 인코딩 받식 =&gt; gzip, deflate$_SERVER['HTTP_ACCEPT_LANGUAGE'] = 언어 =&gt; ko$_SERVER['HTTP_USER_AGENT'] = 사이트 접속한 사용자 환경 =&gt; Mozilla/4.0(compatible; MSI...
  • 웹지기 10-01 5506 0 0 댓글 0
  • 57 [ php ] foreach 및 array
  • [code]$state_list = array( 1 =&gt; "모집중", 2 =&gt; "마감", 3 =&gt; "운영중");if(!array_key_exists($state, $state_list)) $state = 0;$arr_key = array( "ed_name" =&gt; "평생교육사명", "ed_subject" =&gt; &#...
  • 웹지기 10-01 4656 0 0 댓글 0
  • 56 [ php ] PHP 정규식
  • 파일이나 문자열 내에 포함되어 있는 특별한 패턴(또는 특별한 조건을 만족하는 문자열)을 검색하기 위해 미리 정의된 다양한 특수 문자들의 조합을 정규식(regular __EXPRESSION__)이라 한다. 정규식에서의 특수 문자(special character)는 다음과 같다.(1) ^ (caret) : 라인의 처음이나 문자열의 처음을 표시예 : ^aaa (문자열의 처음에 aaa를 포함하면 참, 그렇지 않으면 거짓)(2) $ (dollar) : 라인의 끝이나 문자열의 끝을 표시예 : aaa$ (문자...
  • 웹지기 10-01 3380 0 0 댓글 0
  • 55 [ php ] 게시판 권한, 그룹관리자 권한 수정시
  • /lib/common.lib.phpfunction is_admin 을 변경// 관리자인가?[code]function is_admin($mb_id){ global $config, $group, $board; if (!$mb_id) return; if ($config['cf_admin'] == $mb_id) return 'super'; //if ($group['gr_admin'] == $mb_id) return 'group'; //그룹관리자를 몽땅 만들기 위해 추가 2011.1.2 FREEMASTER...
  • 웹지기 10-01 6180 0 0 댓글 1
  • 54 [ php ] php로 디렉토리 삭제
  • php 디렉토리와 하위 파일까지 한꺼번에 삭제하는 함수[code]// 사용시 모든 데이터가 날아가므로 주의를 요함(Recursive)function LIB_removeAllData( $URL ){ if( is_dir( $URL )) { if( $dh = opendir( $URL ) ) { while( ( $file = readdir( $dh ) ) !== false ) { if( $file == '.' || $file == ".." ) continue; if( f...
  • 웹지기 09-30 4248 0 0 댓글 0
  • 열람중 [ php ] php 업로드 작성 및 파일 업로드 보안문제 - 7가지
  • 1.php,inc,html,htm,phtml,php3 등의 확장자는 절대로 올릴 수 없게 한다 !.txt 도 못올리게 합니다. .txt 를 사용해서 쿠키를 훔칠수도 있다.2.업로드 디렉토리는 무조건 htdocs 아래 말고 다른 디렉토리 에 올린다 !!/updir 이나 c:\updir 등 htdocs 와 관련이 없는 디렉토리에 올리게 한다. !!3.CP명령을 사용시에 exec(cp $file , 처럼 exec() 를 절대로 사용하지 말아야 한다.기냥 cp()만을 사용하라 !!!www.php.net/...
  • 웹지기 09-30 4775 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
1,057
어제
7,139
최대
33,828
전체
8,414,752

그누보드5
Copyright © funyphp.com. All rights reserved.