Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Keselamatan muat naik fail dalam PHP

Keselamatan muat naik fail dalam PHP

王林
王林asal
2023-05-23 08:24:051092semak imbas

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 fail

Jika 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:

$filename = $_FILES'file';

$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

Apabila menetapkan laluan muat naik fail pada bahagian pelayan, fail yang dimuat naik hendaklah disimpan dalam direktori berasingan untuk mengelakkan daripada menyimpan fail yang dimuat naik terus dalam direktori aplikasi. , dengan itu mengurangkan risiko pelanggaran keselamatan.

5. Ringkasan

Memuat naik fail ialah fungsi biasa dalam aplikasi web, tetapi ia juga merupakan bahagian yang boleh menyebabkan masalah keselamatan dengan mudah. Untuk memastikan keselamatan fail yang dimuat naik, kami perlu mengambil beberapa siri langkah pencegahan, seperti penapisan jenis fail, penyulitan nama fail, tetapan kebenaran fail, tetapan laluan muat naik fail, dll., untuk memastikan sistem dilindungi daripada ancaman muat naik fail berniat jahat .

Atas ialah kandungan terperinci Keselamatan muat naik fail 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