엄격한 파일 유형 유효성 검증 : 클라이언트 측 파일 확장에만 의존하지 마십시오. 대신 이미지 파일의 클래스 (권장) 또는 함수를 사용하여 서버 측의 실제 파일 유형을 확인하십시오. 이렇게하면 사용자가 확장자를 변경하여 악의적 인 파일을 위장하는 것을 방지합니다. 예를 들면 다음과 같습니다. finfo
getimagesize()
<code class="php">$finfo = new finfo(FILEINFO_MIME_TYPE); $mime_type = $finfo->file($_FILES['file']['tmp_name']); if ($mime_type != 'image/jpeg' && $mime_type != 'image/png') { // Handle invalid file type }</code>파일 크기에서 클라이언트 측 및 서버 측 제한을 모두 설정합니다. 클라이언트 측 제한은 사용자 경험 개선을 제공하여 궁극적으로 거부 될 큰 업로드를 방지합니다. 서버 측 제한은 보안 및 리소스 관리에 중요합니다. 를 사용하여 파일에서
ini_set()
임시 디렉토리 : 업로드 된 파일은 처음에 임시 디렉토리에 저장됩니다. 이 디렉토리에 적절한 권한이 있는지 확인하고 (웹 서버에서만 쓸 수 있음) 오래된 임시 파일을 정기적으로 정리하십시오. upload_max_filesize
대상 디렉토리 : post_max_size
Webroot 디렉토리 외부에서 업로드 된 파일을 저장하기위한 전용 디렉토리를 만듭니다. 이로 인해 웹 브라우저를 통해 파일에 직접 액세스 할 수 없습니다. php.ini
오류 처리 : ini_get()
파일 크기 제한, 유효하지 않은 파일 유형 또는 디스크 공간 문제를 초과하는 문제와 같은 문제를 우아하게 처리하기위한 포괄적 인 오류 처리를 구현합니다. finfo
는 사용자 입력이 파일 포함에 직접 영향을 미치도록 허용하지 않습니다. getimagesize()
코드 주입 : realpath()
PHP 파일 업로드 중에 파일 유형과 크기를 안전하게 검증하려면 파일 유형 및 크기 검증이 필요합니다. 클라이언트 측 점검은 사용자 경험을 향상 시키지만 보안에 의존해서는 안됩니다. 서버 측 유효성 검사는 절대적으로 필수적입니다. $_FILES['file']['size']
ini_set()
지시문을 관리하십시오. 이러한 제한이 애플리케이션 및 서버 리소스에 적합한 지 확인합니다. ini_get()
upload_max_filesize
post_max_size
예제 : php.ini
예측 가능한 파일 이름과 관련된 충돌 및 보안 위험을 방지하기 위해 고유 한 파일 이름을 생성합니다.
정기적 인 정리 :위 내용은 PHP에서 보안 파일 업로드를 구현하려면 어떻게해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!