Rumah >pembangunan bahagian belakang >tutorial php >Keselamatan muat naik fail dalam PHP
Dengan perkembangan Internet, fungsi muat naik fail telah menjadi salah satu fungsi standard hampir semua aplikasi web. Dalam PHP, fungsi muat naik fail dilaksanakan melalui pembolehubah superglobal $_FILES. Walau bagaimanapun, fungsi muat naik fail selalunya merupakan tempat yang paling terdedah untuk isu keselamatan dalam aplikasi web. Artikel ini akan menggabungkan kes praktikal untuk memperkenalkan isu yang perlu diberi perhatian dalam keselamatan muat naik fail dalam PHP dan menyediakan beberapa penyelesaian.
1. Prinsip asas muat naik fail
Dalam PHP, muat naik fail pada asasnya boleh dicapai melalui langkah berikut:
1 Tetapkan atribut enctype dalam bentuk HTML Untuk multipart/form-data, dan tambahkan kawalan muat naik fail
2. Gunakan pembolehubah super global $_FILES pada bahagian pelayan untuk menerima fail yang dimuat naik
3. Dapatkan maklumat berkaitan tentang fail yang dimuat naik melalui pembolehubah super global $_FILES, seperti nama fail, jenis, saiz, dll. 4. Simpan fail yang dimuat naik ke direktori yang ditentukan 2. Isu keselamatan muat naik fail biasa 1 Muat naik fail hasad Muat naik fail hasad bermakna penyerang menggunakan fungsi muat naik fail untuk memuat naik fail yang mengandungi kod hasad dan menggunakan fail ini untuk melakukan serangan. . Salah satu kaedah serangan yang lebih biasa ialah memuat naik fail webshell selalunya mengandungi beberapa fungsi yang boleh melaksanakan perintah Penyerang boleh mengawal pelayan melalui webshell. 2. Muat naik fail besar Memuat naik fail besar akan menduduki lebar jalur dan ruang storan pelayan dan boleh menyebabkan pelayan ranap. Selain itu, dengan memuat naik fail besar, penyerang juga boleh melakukan beberapa serangan penafian perkhidmatan (DoS). 3. Penimpaan failJika penyerang boleh menggantikan fail yang ditentukan dengan fail yang dimuat naik sendiri dengan memuat naik fail, ia boleh menyebabkan akibat yang serius seperti kehilangan data utama kepada sistem. Penyerang boleh mencapai penggantian fail dengan memuat naik secara haram dan mengeksploitasi kelemahan traversal direktori. 4. Pintasan jenis fail Penyerang boleh memintas pemeriksaan jenis fail pelayan dengan memalsukan nama akhiran atau jenis MIME fail, dengan itu memuat naik beberapa fail haram. Sebagai contoh, penyerang boleh menukar sambungan fail HTML kepada PHP untuk melaksanakan serangan XSS. 3. Penyelesaian untuk keselamatan muat naik fail 1. Penapisan senarai putih Di bahagian pelayan, hanya jenis fail tertentu dibenarkan untuk dimuat naik melalui penapisan senarai putih memuat naik fail yang tidak memenuhi keperluan. Kaedah ini boleh menghalang serangan pintasan jenis fail dengan berkesan. Kod sampel adalah seperti berikut: $allowedExt = array('jpg', 'jpeg', 'png', 'gif');//Dapatkan nama fail dan sambungan fail
$nama fail = $_FILES'file';
$fileext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
//Tentukan sama ada jenis fail dibenarkan
if(!in_array($fileext) . diteka atau sengaja diusik oleh nama fail penyerang. Sebagai contoh, anda boleh menggunakan algoritma penyulitan md5 untuk menyulitkan nama fail. Kod sampel adalah seperti berikut:
$filehash = md5($filename.time()).'.'.$fileext;
3. Tetapan kebenaran fail
Hadkan akses pengguna kepada fail dengan menetapkan kebenaran fail pada bahagian pelayan. Sebagai contoh, anda boleh menetapkan kebenaran fail yang dimuat naik kepada 644, membenarkan hanya pelayan dan pengguna mengakses fail dan menafikan akses pengguna lain kepada fail tersebut.
4. Laluan muat naik fail
Atas ialah kandungan terperinci Keselamatan muat naik fail dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!