재인쇄할 소스를 표시하십시오: PHP 취약점 전체 솔루션(9) - 파일 업로드 취약점 일련의 웹 애플리케이션은 일반적으로 방문자가 일부 파일을 쉽게 업로드할 수 있도록 파일 업로드 기능을 제공합니다. 다음은 간단한 파일 업로드 양식입니다 form> php 구성 파일 php.ini, upload_max_filesize 옵션은 업로드할 수 있는 파일 크기를 지정하며 기본값은 2M입니다 $_FILES 배열 변수 PHP는 $_FILES 변수를 사용하여 파일을 업로드합니다. test.txt를 업로드하는 경우 $_FILES 배열의 내용은 다음과 같습니다. $FILES Array { [file] => 배열 { [이름] => test.txt //파일 이름 [유형] => text/plain //MIME 유형 [tmp_name] => .tmp //임시 파일 [error] => 0 //오류 메시지 [size] => 536 //파일 크기(바이트) } } 파일 버튼의 이름 속성 값은 file 그런 다음 $_FILES['file' ]['name '] 경로를 제외하고 클라이언트가 업로드한 파일 이름을 가져옵니다. $_FILES['file']['tmp_name']을 사용하여 서버가 업로드된 파일을 저장하는 임시 파일 경로를 얻습니다 업로드된 파일이 저장된 폴더 PHP는 직접 업로드된 파일은 웹사이트의 루트 디렉터리에 저장되지만, 이름은 $_FILES['file']['tmp_name'] 값으로 임시 파일로 저장됩니다. 개발자는 이 임시 파일을 저장된 웹사이트 폴더에 복사해야 합니다. . $_FILES['file']['tmp_name'] 값은 PHP에 의해 설정되며 파일의 원래 이름과 다릅니다. 개발자는 $_FILES['file']['name'을 사용해야 합니다. ] 업로드된 파일의 원본 이름을 가져옵니다. 파일 업로드 시 오류 정보 $_FILES['file']['error'] 변수는 파일 업로드 시 오류 정보를 저장하는 데 사용됩니다. 错误信息 数值 说 明 UPLOAD_ERR_OK 0 没有错误 UPLOAD_ERR_INI_SIZE 1 上传文件的大小超过php.ini的设置 UPLOAD_ERR_FROM_SIZE 2 上传文件的大小超过HTML表单中MAX_FILE_SIZE的值 UPLOAD_ERR_PARTIAL 3 只上传部分的文件 UPLOAD_ERR_NO_FILE 4 没有文件上传 파일 업로드 취약점 웹사이트 방문자에게 이미지 업로드 기능을 제공하는 경우 방문자가 업로드하는 것이 실제로 이미지가 아닌 PHP 프로그램일 수 있으므로 주의해야 합니다. 지정할 수 있는 것입니다. 이미지가 저장된 디렉토리가 오픈 폴더인 경우, 침입자는 업로드된 PHP 파일을 원격으로 실행하여 공격을 수행할 수 있습니다. 다음은 간단한 파일 업로드 예시입니다. php // 파일 업로드 디렉터리 설정 $uploaddir = "D : /www/images/"; // 파일이 있는지 확인 if (isset($_FILES['file1'])) { // 배치할 전체 경로 파일 이름을 포함한 웹 사이트 디렉토리 $uploadfile = $uploaddir . $_FILES['file1']['name'] // 서버에 저장된 경로를 실제 파일 이름으로 이동 move_uploaded_file($_FILES[ 'file1']['tmp_name'], $uploadfile); } ?> …… 양식> 이 예제에는 체크 파일 접미사가 없으며 어떤 파일이든 업로드할 수 있으며 명백한 업로드 취약점이 있습니다 위는 PHP 취약점(9)에 대한 전체 설명입니다. - 파일 업로드 취약점에 대한 내용입니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 주목하세요!