PHP 파일 업로드 유형 확인

블라디미르 스투스

Ok 여기에 파일 업로드 코드가 있습니다.

 $ext_whitelist = array('pdf','doc','doc','mkv','mp4','mpg','mpeg','avi','flv','wma','ogg');

 if(in_array($ext, $ext_whitelist))
 {
     $uniqid_file = uniqid('', true)."_".$file['name'];
     $lokacija = $folder . "/" . $uniqid_file;
     $encoded_uniqid_file = base64_encode($uniqid_file);
     move_uploaded_file($file['tmp_name'], $lokacija);
     $base_url= base_url("forms/fdownload/$encoded_uniqid_file/$path");
     $form_data[$key] = "<a href=".$base_url.">$uniqid_file </a>";
 }

이것은 파일 확장자를 확인하므로 일부는 파일 이름을 쉽게 바꿀 수 있습니다. 누군가가 파일 유형을 올바르게 확인하도록 도와 줄 수 있습니까?

Gerifield

댓글을 달고 답으로 좀 더 써보도록하겠습니다.

Mimetype 검사는 파일 유형을 알고 싶다면 좋은 방법이지만 MIME 유형을 가짜로 만들기가 매우 쉽기 때문에 업로드시 파일을 허용 / 거부하려는 경우 안전하지 않습니다. 시도해보세요. 프록시로 변경하거나 간단한 이미지를 만든 다음 끝에 PHP 코드를 추가하고 이름을 .php로 바꿀 수 있습니다. mimetype 만 확인하는 경우이 .php 파일을 업로드하여 서버에서 실행할 수 있습니다.

PHP 코드가 포함 된 .jpg를 업로드해도 괜찮습니다. 서버는 PHP 파서를 통해 푸시하지 않습니다. (기본 구성을 변경하는 경우는 예외입니다. (Apache : AddType, nginx : AddHandler)

업로드 된 파일을 확인하는 몇 가지 "보안"방법이 있습니다.

1. 확장을 확인하고 화이트리스트와 비교합니다.

이것은 질문의 예이지만 완전한 솔루션을 작성하고 싶습니다. (다음 .과 같은 파일 이름이있을 수 있으므로 처음 생각 만 확인하는 일반적인 실수 : something.txt.php이므로 항상 마지막 접미사를 확인하십시오.)

$ext = array_pop(explode(".", $fileName));
$whitelist = array('pdf','doc','doc','mkv','mp4','mpg','mpeg','avi','flv','wma','ogg');

if (in_array($ext, $whitelist) {
  //OK the extension is good, handle the upload.
} else {
  //Wrong type, add error message.
}

이와 같은 것을 사용하는 경우 조심하고 .php와 같은 확장명과 서버 구성에있는 모든 것을 허용하지 마십시오.

2. 파일 이름을 바꾸고 확장자를 삭제하십시오.

이것은 또 다른 좋은 방법이지만 원래 파일 이름, 확장자 및 MIME 유형을 유지하고 싶을 수도 있습니다. 데이터베이스에 저장할 수 있습니다!

이 솔루션의 경우 원래 파일 이름을 가져 와서 임의의 데이터를 추가 한 다음 (하나의 폴더에 업로드하고 something.jpg를 2 번 업로드하려고하면 좋지 않은 생각이므로) 저장합니다. 예를 들면 :

$newName = sha1($fileName.time());
move_uploaded_file($file['tmp_name'], $uploadPath . $newName);

파일에 확장자가 없기 때문에 서버는 파일을 실행하지 않습니다. (하지만 예를 들어 이미지의 경우 브라우저에서 작동합니다. 브라우저에서 mimetype을 사용하여 유형을 결정하고 변경하지 않았기 때문입니다.)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP 파일 업로드 유형 확인

분류에서Dev

PHP-파일 업로드시 고유 한 파일 이름 확인

분류에서Dev

PHP를 사용하여 양식을 통해 업로드 된 파일의 MIME 유형 확인

분류에서Dev

고유 이메일 확인 및 PDF로 업로드 파일 유형 제한

분류에서Dev

파일로드 완료 후 FileReference에서 파일 유형 확인

분류에서Dev

PHP 파일 업로드 변경 파일 이름 확장자 유지

분류에서Dev

입력 유형 파일-Ajax 업로드 및 PHP 스크립트

분류에서Dev

양식 제출 PHP에서 파일 업로드 확인

분류에서Dev

업로드 된 Word 문서의 확장자 / 파일 유형

분류에서Dev

PHP는 업로드 할 하나의 확장 유형 만 허용합니다. 파일이 알 수없는 확장자 유형입니다.

분류에서Dev

PHP 파일 유형 확장자 제거

분류에서Dev

링크에서 다운로드 할 파일 유형을 확인하는 방법

분류에서Dev

PHP로 존재 파일 확인

분류에서Dev

업로드 된 파일의 실제 유형을 인식 하시겠습니까?

분류에서Dev

업로드 파일 크기 확인

분류에서Dev

조건에 파일 유형이 지정되었지만 PHP 파일 업로드가 작동하지 않음

분류에서Dev

PHP로 파일 업로드

분류에서Dev

PHP로 파일 업로드

분류에서Dev

파일 업로드 : 파일 형식을 확인한 다음 srvlet을 호출합니다.

분류에서Dev

파일 업로드 : 파일 형식을 확인한 다음 srvlet을 호출합니다.

분류에서Dev

jQuery 파일 업로드-파일 크기 및 확장자 확인

분류에서Dev

PHP 인증으로 사이트 간 파일 업로드

분류에서Dev

파일 업로드 PHP

분류에서Dev

PHP oop 파일 업로드

분류에서Dev

PHP 파일 업로드

분류에서Dev

Seafile PHP 파일 업로드

분류에서Dev

HTML / PHP 파일 업로드

분류에서Dev

PHP에서 여러 파일 업로드 필드를 확인하는 방법은 무엇입니까?

분류에서Dev

c # : 업로드 된 파일 확인 및 계속 업로드

Related 관련 기사

  1. 1

    PHP 파일 업로드 유형 확인

  2. 2

    PHP-파일 업로드시 고유 한 파일 이름 확인

  3. 3

    PHP를 사용하여 양식을 통해 업로드 된 파일의 MIME 유형 확인

  4. 4

    고유 이메일 확인 및 PDF로 업로드 파일 유형 제한

  5. 5

    파일로드 완료 후 FileReference에서 파일 유형 확인

  6. 6

    PHP 파일 업로드 변경 파일 이름 확장자 유지

  7. 7

    입력 유형 파일-Ajax 업로드 및 PHP 스크립트

  8. 8

    양식 제출 PHP에서 파일 업로드 확인

  9. 9

    업로드 된 Word 문서의 확장자 / 파일 유형

  10. 10

    PHP는 업로드 할 하나의 확장 유형 만 허용합니다. 파일이 알 수없는 확장자 유형입니다.

  11. 11

    PHP 파일 유형 확장자 제거

  12. 12

    링크에서 다운로드 할 파일 유형을 확인하는 방법

  13. 13

    PHP로 존재 파일 확인

  14. 14

    업로드 된 파일의 실제 유형을 인식 하시겠습니까?

  15. 15

    업로드 파일 크기 확인

  16. 16

    조건에 파일 유형이 지정되었지만 PHP 파일 업로드가 작동하지 않음

  17. 17

    PHP로 파일 업로드

  18. 18

    PHP로 파일 업로드

  19. 19

    파일 업로드 : 파일 형식을 확인한 다음 srvlet을 호출합니다.

  20. 20

    파일 업로드 : 파일 형식을 확인한 다음 srvlet을 호출합니다.

  21. 21

    jQuery 파일 업로드-파일 크기 및 확장자 확인

  22. 22

    PHP 인증으로 사이트 간 파일 업로드

  23. 23

    파일 업로드 PHP

  24. 24

    PHP oop 파일 업로드

  25. 25

    PHP 파일 업로드

  26. 26

    Seafile PHP 파일 업로드

  27. 27

    HTML / PHP 파일 업로드

  28. 28

    PHP에서 여러 파일 업로드 필드를 확인하는 방법은 무엇입니까?

  29. 29

    c # : 업로드 된 파일 확인 및 계속 업로드

뜨겁다태그

보관