Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengesahkan Jenis Fail yang Dimuat Naik dengan Selamat dalam PHP?

Bagaimanakah Saya Boleh Mengesahkan Jenis Fail yang Dimuat Naik dengan Selamat dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-01 22:43:11639semak imbas

How Can I Securely Verify Uploaded File Types in PHP?

Mengesahkan Jenis Fail Yang Dimuat Naik dalam PHP

Apabila mengesahkan jenis fail yang dimuat naik dalam PHP, bergantung pada $_FILES['fupload']['type'] yang disediakan pengguna adalah berisiko kerana ia boleh dimanipulasi. Kaedah ini boleh menyebabkan ketidakkonsistenan dalam pengendalian ralat.

Untuk mengatasinya, pertimbangkan untuk menggunakan mime_content_type() untuk mendapatkan pengesanan jenis fail yang lebih dipercayai. Walau bagaimanapun, mime_content_type() juga bergantung pada input pengguna sedikit sebanyak.

Untuk pendekatan yang lebih mantap:

Menggunakan exif_imagetype():

$allowedTypes = [IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF];
$detectedType = exif_imagetype($_FILES['fupload']['tmp_name']);
$error = !in_array($detectedType, $allowedTypes);

Kaedah ini mengkaji kandungan sebenar fail yang dimuat naik dan mengesahkan jenisnya berdasarkan fail tersebut tandatangan.

Memanfaatkan finfo():

Jika pelayan anda menyokong finfo(), ia menyediakan analisis fail yang lebih komprehensif. Contoh kod berikut menunjukkan penggunaannya:

$mimeTypes = ['image/png', 'image/jpeg', 'image/gif'];
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($_FILES['fupload']['tmp_name']);
$error = !in_array($mimeType, $mimeTypes);

Dengan melaksanakan salah satu daripada kaedah ini, anda boleh meningkatkan kebolehpercayaan jenis fail проверки anda dan meningkatkan ketekalan pengendalian ralat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan Jenis Fail yang Dimuat Naik dengan Selamat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn