[PHP] [보안] 첨부파일 등록시 신경쓸 것들
로빈아빠
본문
파일업로드를 할 때 form 에서 사용된 file control 이름이 attach 라고 하고,
이를 처리하기 위해 $attach, $attach_name, $attach_size, $attach_type 등을 바로 쓰게되면
편법을 써서 서버의 파일을 빼낼 수 있는 위험이 있기 때문에 이를 방지하기 위한 코딩 방법임
▶ is_uploaded_file() 함수 사용
정말 업로드된 파일인지 확인
사용 예)
if (!is_uploaded_file($_FILES['attach'])) {
exit;
}
▶ 변수 명 지정 방식
파일 이름
$_FILES['attach']['name']
파일 종류 (예: "image/png")
$_FILES['attach']['type']
파일 크기
$_FILES['attach']['size']
임시 디렉토리에 저장된 이름
$_FILES['attach']['tmp_name']
에러 코드
$_FILES['attach']['error']
UPLOAD_ERR_OK (0) - 업로드 성공
UPLOAD_ERR_INI_SIZE (1) - php.ini 에서 제한한 MAX_FILE_SIZE 초과
UPLOAD_ERR_FORM_SIZE (2) - HTML 폼에서 제한한 MAX_FILE_SIZE 초과
UPLOAD_ERR_PARTIAL (3) - 파일의 일부분만 업로드 되었음
UPLOAD_ERR_NO_FILE (4) - 업로드된 파일이 없음
상수는 PHP 4.3.0 이상 부터 지원됨, 이전버전은 숫자로 지원
$_FILES[] 는 PHP 4.0.0 이상 부터 지원됨
error 속성은 PHP 4.2.0 이상 부터 지원
$_FILES[] 대신 $HTTP_POST_FILES[] 로 써도 됨
▶ 파일 복사
파일을 복사하기 위해
copy($_FILES['attach'], $dest_file);
를 사용하는 대신
// 파일을 임시폴더에 저장하기 때문에 파일을 원하는 디렉토리로 옮겨준다. (박인규)
move_uploaded_file($_FILES['attach']['name'], $dest_file);
을 사용
출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=15573
이를 처리하기 위해 $attach, $attach_name, $attach_size, $attach_type 등을 바로 쓰게되면
편법을 써서 서버의 파일을 빼낼 수 있는 위험이 있기 때문에 이를 방지하기 위한 코딩 방법임
▶ is_uploaded_file() 함수 사용
정말 업로드된 파일인지 확인
사용 예)
if (!is_uploaded_file($_FILES['attach'])) {
exit;
}
▶ 변수 명 지정 방식
파일 이름
$_FILES['attach']['name']
파일 종류 (예: "image/png")
$_FILES['attach']['type']
파일 크기
$_FILES['attach']['size']
임시 디렉토리에 저장된 이름
$_FILES['attach']['tmp_name']
에러 코드
$_FILES['attach']['error']
UPLOAD_ERR_OK (0) - 업로드 성공
UPLOAD_ERR_INI_SIZE (1) - php.ini 에서 제한한 MAX_FILE_SIZE 초과
UPLOAD_ERR_FORM_SIZE (2) - HTML 폼에서 제한한 MAX_FILE_SIZE 초과
UPLOAD_ERR_PARTIAL (3) - 파일의 일부분만 업로드 되었음
UPLOAD_ERR_NO_FILE (4) - 업로드된 파일이 없음
상수는 PHP 4.3.0 이상 부터 지원됨, 이전버전은 숫자로 지원
$_FILES[] 는 PHP 4.0.0 이상 부터 지원됨
error 속성은 PHP 4.2.0 이상 부터 지원
$_FILES[] 대신 $HTTP_POST_FILES[] 로 써도 됨
▶ 파일 복사
파일을 복사하기 위해
copy($_FILES['attach'], $dest_file);
를 사용하는 대신
// 파일을 임시폴더에 저장하기 때문에 파일을 원하는 디렉토리로 옮겨준다. (박인규)
move_uploaded_file($_FILES['attach']['name'], $dest_file);
을 사용
출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=15573
관련링크
댓글목록
등록된 댓글이 없습니다.