Pengesahan Jenis Fail PHP: Penyelesaian Boleh Dipercayai
Dalam PHP, menentukan jenis fail yang dimuat naik adalah penting untuk memastikan pengendalian yang betul. Walaupun menggunakan $_FILES['fupload']['type'] untuk mengesahkan jenis imej ialah pendekatan biasa, adalah penting untuk mengetahui batasannya.
Kelemahan Penggunaan $_FILES['fupload' ]['type']
Isu utama dengan bergantung pada $_FILES['fupload']['type'] ialah ia mengandungi maklumat yang ditentukan pengguna, yang sememangnya tidak boleh dipercayai. Pengguna boleh memanipulasi nilai ini dengan mudah untuk menyamarkan fail berniat jahat. Akibatnya, bergantung pada kaedah ini sahaja boleh membawa kepada kelemahan keselamatan.
Pengesahan Jenis Fail yang Boleh Dipercayai
Untuk memastikan pengesahan jenis fail yang tepat, adalah disyorkan untuk melaksanakan pelayan- pengesahan sisi. PHP menyediakan beberapa fungsi yang boleh dipercayai yang boleh digunakan untuk tujuan ini:
1. exif_imagetype()
Direka bentuk khusus untuk fail imej, exif_imagetype() memeriksa pengepala imej dan mengembalikan pemalar yang mewakili jenis yang dikesan. Kaedah ini teguh dan tepat untuk mengesahkan imej.
Contoh:
$allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF); $detectedType = exif_imagetype($_FILES['fupload']['tmp_name']); $error = !in_array($detectedType, $allowedTypes);
2. Fungsi finfo (jika Disokong)
Fungsi PHP ini boleh memberikan maklumat terperinci tentang fail, termasuk jenisnya. Jika pelayan anda menyokong finfo, ia merupakan alternatif terbaik untuk exif_imagetype().
Contoh:
$finfo = new finfo(FILEINFO_MIME); $mimeType = $finfo->file($_FILES['fupload']['tmp_name']); $error = $mimeType !== 'image/gif';
Dengan menggunakan kaedah yang boleh dipercayai ini, anda boleh menyemak fail yang dimuat naik dengan berkesan jenis dalam PHP, memastikan hanya fail yang sah diterima dan diproses oleh permohonan anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan Jenis Fail yang Dimuat Naik dengan Amanah dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!