최신 네트워크 응용 프로그램에서는 사용자가 사진 및 멀티미디어 파일을 업로드 해야하는 일반적인 요구 사항이되었습니다. 그러나 파일 업로드의 보안을 보장하고 잠재적 위험을 피하는 방법은 모든 개발자가주의를 기울여야하는 문제입니다. 이 기사는 사용자가 제공 한 사진 및 멀티미디어 파일을 효과적으로 확인하고 안전하게 처리하는 데 도움이되는 코드 예제로 보완 된 데이터 필터링에 PHP를 사용하는 핵심 방법을 소개합니다.
먼저 업로드 된 파일이 허용 이미지 또는 멀티미디어 형식에 속하는지 확인해야합니다. 파일 확장자를 확인하면 분명히 준수하지 않는 파일 유형을 필터링 할 수 있습니다.
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif'];
$uploadedFileExtension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array(strtolower($uploadedFileExtension), $allowedExtensions)) {
echo "다음 파일 유형 만 허용됩니다:jpg, jpeg, png, gif";
exit;
}
위의 코드는 pathinfo () 함수를 사용하여 파일 확장자를 얻고 in_array () 함수를 통해 허용 범위 내에 있는지 여부를 결정합니다.
확장자가 중요하지만, 더 정확한 검증은 파일의 마임 유형을 통해서입니다. PHP의 내장 FINFO_FILE () 함수는 가장 무도회 파일의 업로드를 방지하기 위해 실제 마임 유형의 파일 유형을 가져올 수 있습니다.
$allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif'];
$uploadedFileMimeType = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $_FILES['file']['tmp_name']);
if (!in_array($uploadedFileMimeType, $allowedMimeTypes)) {
echo "다음 파일 유형 만 허용됩니다:jpeg, png, gif";
exit;
}
MIME 유형 확인을 통해 업로드 보안을 크게 향상시킬 수 있습니다.
서버 리소스를 저장하고 대형 파일의 악의적 인 업로드를 피하려면 업로드 크기를 제한해야합니다.
$maxFileSize = 10 * 1024 * 1024; // 10MB
if ($_FILES['file']['size'] > $maxFileSize) {
echo "파일 크기를 업로드 할 수 없습니다10MB";
exit;
}
이 예제는 파일 크기를 10MB로 제한하고 초과하면 업로드가 거부됩니다.
파일 확인이 전달되면 파일 이름 충돌 및 경로 누출을 방지하기 위해 파일을 안전하게 저장해야합니다.
$uploadDirectory = 'uploads/';
$uploadedFileName = $_FILES['file']['name'];
$uploadedFileTempName = $_FILES['file']['tmp_name'];
$newFileName = uniqid('', true) . '.' . $uploadedFileExtension;
$destination = $uploadDirectory . $newFileName;
if (move_uploaded_file($uploadedFileTempName, $destination)) {
echo "파일이 성공적으로 업로드되었습니다";
} else {
echo "파일 업로드가 실패했습니다";
exit;
}
Uniqid () 함수를 사용하여 파일 덮어 쓰기를 효과적으로 피하기 위해 고유 파일 이름을 생성하십시오.
웹 페이지에 업로드 파일을 표시 할 때는 XSS와 같은 보안 문제를 피하기 위해 HTML 태그를 올바르게 사용하는지 확인해야합니다. 사용 가능한 이미지 태그이지만 파일 소스와 경로는 엄격하게 제어해야합니다. 멀티미디어 파일을 사용할 수 있습니다
PHP 데이터 필터링은 파일 확장, MIME 유형 및 크기 제한을 포괄적으로 검증하여 사용자의 보안을 효과적으로 업로드하는 사진 및 멀티미디어 파일을 보장 할 수 있습니다. 이 기사의 샘플 코드가 실제 프로젝트에서 업로드 된 데이터를 처리하는 데 도움이되기를 바랍니다.