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

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

DDD
DDDasal
2024-11-30 19:05:12407semak imbas

How Can I Securely Verify Uploaded Image File Types in PHP?

Menyahpepijat Pengesahan Jenis Fail dalam PHP

Walaupun menggunakan pendekatan biasa untuk mengesahkan jenis fail imej, sesetengah pengguna telah mengalami ralat semasa proses muat naik.

Coretan kod yang disediakan menggunakan sifat $_FILES['fupload']['type'] yang disediakan pengguna, iaitu terdedah kepada manipulasi oleh pengguna yang berniat jahat. Untuk menangani kerentanan ini, telah dicadangkan bahawa menggunakan mime_content_type() akan meningkatkan ketepatan.

Menyelesaikan Isu

Walau bagaimanapun, penyelesaian yang disyorkan adalah untuk mengelakkan bergantung sepenuhnya pada nilai yang ditentukan pengguna. Sebaliknya, adalah dinasihatkan untuk menjalankan pengesahan jenis anda sendiri.

Untuk imej, fungsi exif_imagetype() menawarkan kaedah yang boleh dipercayai untuk menentukan format sebenar fail:

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

Pendekatan ini menyemak tandatangan binari imej secara langsung, menghapuskan kemungkinan pengguna memanipulasi jenis fail.

Sebagai alternatif, untuk pengesahan jenis fail yang lebih maju, pertimbangkan untuk menggunakan fungsi finfo jika pelayan anda menyokongnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan Jenis Fail Imej 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