Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengelakkan kelemahan muat naik fail menggunakan PHP

Bagaimana untuk mengelakkan kelemahan muat naik fail menggunakan PHP

王林
王林asal
2023-06-24 08:25:351574semak imbas

Dengan populariti Internet dan jenis tapak web yang semakin meningkat, fungsi muat naik fail menjadi semakin biasa, tetapi fungsi muat naik fail juga telah menjadi salah satu sasaran utama penyerang. Penyerang boleh mengawal tapak web dan mencuri maklumat pengguna dengan memuat naik fail berniat jahat ke tapak web dan satu siri tingkah laku berniat jahat Oleh itu, cara untuk menghalang kelemahan muat naik fail telah menjadi isu penting dalam keselamatan Web. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengelakkan kelemahan muat naik fail.

  1. Semak jenis fail dan sambungan

Penyerang sering menyamar sebagai fail yang tidak mengancam seperti imej dan mendapatkan kebenaran sistem dengan memuat naik fail berniat jahat, jadi fail yang dimuat naik Adalah perlu untuk menyemak jenis dan sambungan.

Pertama, anda boleh menggunakan $_FILES'file' untuk mendapatkan jenis fail yang dimuat naik, menilai jenis fail dan hanya membenarkan muat naik jenis fail tertentu, seperti format imej (png, jpg, dll.) .

Kedua, anda boleh menggunakan fungsi pathinfo() untuk mendapatkan sambungan fail yang dimuat naik Pelanjutan juga dinilai dan hanya sambungan yang dinyatakan dibenarkan untuk dimuat naik. Walau bagaimanapun, perlu diingatkan bahawa sambungan beberapa fail boleh diganggu, jadi cara lain perlu digabungkan untuk mengukuhkan perlindungan.

  1. Semak saiz fail

Penyerang boleh menggunakan sumber pelayan dengan memuat naik fail besar, menyebabkan beban pelayan yang berlebihan. Oleh itu, ia juga perlu untuk mengehadkan saiz fail yang dimuat naik.

Anda boleh menetapkan saiz fail maksimum dan hanya membenarkan fail yang lebih kecil daripada saiz ini dimuat naik. Secara umumnya, saiz kira-kira 2MB adalah lebih sesuai.

  1. Nama fail rawak

Penyerang boleh menggantikan fail asal dengan memuat naik fail dengan nama yang sama, menyebabkan fail asal hilang atau diserang. Oleh itu, nama fail fail yang dimuat naik boleh diacakkan untuk menjana nama fail yang unik untuk mengelakkan fail daripada diganti atau pelawat mendapatkan laluan fail.

Anda boleh menggunakan fungsi uniqid() digabungkan dengan cap waktu untuk menjana nama fail rawak yang unik dan menambah sambungan nama fail asal pada penghujungnya. Contohnya:

$filename = uniqid().time() '.' .' . direktori

  1. Selepas muat naik berjaya, fail yang dimuat naik perlu dialihkan ke direktori yang ditentukan. Terdapat beberapa semakan keselamatan yang perlu dilakukan pada fail yang dimuat naik sebelum mengalihkannya ke direktori.
Sebagai contoh, anda perlu menentukan kebenaran direktori muat naik dan memastikan direktori muat naik tidak berada di bawah direktori akar Web. Adalah lebih baik untuk menetapkan direktori muat naik kepada baca sahaja dan memastikan bahawa nama fail tidak mengandungi maklumat sensitif.

Halang penulisan ganti fail

  1. Semasa proses muat naik fail, fail dengan nama yang sama mungkin dimuat naik. Jika fail yang dimuat naik kemudian mempunyai nama yang sama dengan fail asal, fail asal mungkin ditimpa. Oleh itu, fail yang dimuat naik boleh dinamakan semula untuk memastikan fail tersebut tidak akan ditimpa.
Anda boleh menambah fail pembilang dalam direktori muat naik untuk merekodkan bilangan fail yang telah dimuat naik Pembilang akan dinaikkan sebanyak 1 setiap kali ia dimuat naik, dan nilai pembilang akan digunakan sebagai sebahagian daripada. nama fail.

Halang pelaksanaan kod hasad

  1. Jika fail yang dimuat naik digantikan dengan kod PHP hasad, ia akan menyebabkan ancaman keselamatan yang hebat. Oleh itu, anda perlu memastikan bahawa fail yang dimuat naik tidak akan dilaksanakan sebagai fail boleh laku.
Anda boleh mengubah suai fail konfigurasi Apache dan menambah kod berikut:

ForceType application/octet-stream

Header set Content -Lampiran pelupusan



Ini akan menetapkan semua fail yang berakhir dengan .php sebagai fail binari dan sebagai lampiran apabila dimuat turun.

Selain itu, fail yang boleh dimuat naik boleh dihadkan kepada imej, teks dan fail format lain, dan fail berbahaya seperti fail boleh laku dan fail skrip tidak dibenarkan untuk dimuat naik.

Log dan pemantauan

  1. Akhir sekali, pembalakan dan pemantauan diperlukan untuk memudahkan penemuan masalah dan pemprosesan tepat pada masanya. Anda boleh menggunakan fungsi error_log() terbina dalam PHP untuk merekod maklumat ralat ke dalam fail log, atau menggunakan alat pihak ketiga untuk memantau dan membimbangkan.
Secara amnya, mencegah kerentanan muat naik fail memerlukan penggunaan menyeluruh pelbagai kaedah dan cara untuk meningkatkan keselamatan sebanyak mungkin. Kaedah yang diberikan di atas boleh membantu pembangun PHP mengelakkan masalah kerentanan biasa, tetapi mereka juga perlu membuat pelarasan dan pengoptimuman yang sepadan berdasarkan situasi tertentu.

Atas ialah kandungan terperinci Bagaimana untuk mengelakkan kelemahan muat naik fail menggunakan 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