최근 네트워크 기술의 개발로 악성 파일 업로드는 인터넷 보안에 큰 위협이되었습니다. 악성 파일을 업로드하면 공격자는 웹 사이트의 파일 업로드 제한을 우회 할 수 있으며, 이로 인해 취약성 착취 및 악성 코드 주입과 같은 보안 문제가 발생합니다. 웹 사이트의 보안을 향상 시키려면 PHP 코드의 업로드 된 파일을 효과적으로 필터링하고 확인하여 악의적 인 파일의 업로드를 효과적으로 방지해야합니다.
악성 파일은 종종 공통 파일 유형으로 전송되므로 업로드 된 파일의 접미사를 확인하는 것이 악성 업로드를 방지하는 첫 번째 단계입니다. 간단한 예제 코드는 다음과 같습니다.
$ alluceExtensions = array ( 'jpg', 'jpeg', 'png', 'gif'); // 업로드 된 파일 유형 허용 $ FileExtension = strtOlower (pathInfo ($ _ files [ 'file'] [ 'name'], pathinfo_extension)); // 파일 접미사를 가져옵니다. if (! in_array ($ fileExtension, $ alluctextensions)) { 다이 ( '이미지 파일을 업로드 할 수 있습니다'); }
접미사 확인 외에도 파일의 마임 유형을 확인하는 것도 마찬가지로 중요합니다. 이것은 악의적 인 파일이 합법적 인 파일로 위장되는 것을 방지합니다. php의 mime_content_type () 함수를 사용하여 MIME 유형의 파일을 얻을 수 있습니다. 다음은 예제 코드입니다.
$ allendmimetypes = array ( 'image/jpeg', 'image/png', 'image/gif'); // 업로드 된 MIME 유형 허용 $ uploadedFile = $ _files [ 'file'] [ 'tmp_name']; // 업로드 된 임시 파일 경로를 가져옵니다. $ uploadedMimeType = mime_content_type ($ ubloadedFile); // 업로드 된 마임 유형을 가져옵니다. if (! in_array ($ uploadedMimeType, $ alludmimetypes)) { 다이 ( '이미지 파일을 업로드 할 수 있습니다'); }
파일의 과도한 업로드가 서버 리소스 또는 대역폭을 차지하는 것을 방지하려면 업로드 된 파일의 크기를 제한해야합니다. PHP는 $ _files [ 'file']를 통해 파일 크기를 얻을 수 있으며 다음은 파일 크기를 제한하는 예제 코드입니다.
$ maxfilesize = 5 * 1024 * 1024; // 업로드 할 수있는 최대 파일 크기 (5MB) $ uploadedFilesize = $ _files [ 'file'] [ 'size']; // 업로드 된 파일의 크기를 가져옵니다. 다이 ( '파일 크기는 한계를 초과한다'); }
다른 사용자가 업로드 한 파일 이름의 복제를 피하기 위해 업로드 된 파일의 이름을 바꿀 수 있습니다. php의 uniqid () 함수를 사용하여 고유 파일 이름을 생성하고 파일 접미사와 결합하여 새 파일 이름을 형성하십시오. 관련 예제 코드는 다음과 같습니다.
$ uploadedFilename = $ _files [ 'file'] [ 'name']; // 업로드 된 파일의 원본 파일 이름을 가져옵니다. $ newFilename = uniqid (). '.' . $ FileExtension; // 새 파일 이름을 생성하십시오. $ uploadedFilePath = './uploads/'. $ NewFilename; // 업로드 된 파일을 저장할 경로를 설정하면 (move_uploaded_file ($ _ files [ 'file'] [ 'tmp_name'], $ uploadedFilePath)) { echo '파일 업로드가 성공적으로 업로드'; } 또 다른 { Echo '파일 업로드 실패'; }
요약하면, 파일 접미사 확인, 마임 유형 확인, 파일 크기 제한 및 파일 이름 예방을 통해 악성 파일 업로드의 위험을 효과적으로 방지 할 수 있습니다. 또한 서버 소프트웨어를 정기적으로 업데이트하고 알려진 취약점을 패치하는 것도 시스템 보안을 보장하는 핵심 단계입니다. 이러한 조치를 통해 웹 사이트의 보안을 보장 할 수 있으며 데이터 및 사용자 개인 정보를 보호 할 수 있습니다.