cari
Rumahpembangunan bahagian belakangtutorial phpBagaimana untuk mengelakkan kelemahan muat naik fail menggunakan PHP

Bagaimana untuk mengelakkan kelemahan muat naik fail menggunakan PHP

Jun 24, 2023 am 08:25 AM
Perlindungan keselamatanpengaturcaraan phpKerentanan muat naik fail

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
Data apa yang boleh disimpan dalam sesi PHP?Data apa yang boleh disimpan dalam sesi PHP?May 02, 2025 am 12:17 AM

Phpsessionscanstorestrings, nombor, tatasusunan, andobjects.1.strings: textdatalikeusernames.2.numbers: integersorfloatsforcounters.3.Arrays: ListsLikeshoppingCarts.4.Objects: complextructureSturesthatareserialized.

Bagaimana anda memulakan sesi PHP?Bagaimana anda memulakan sesi PHP?May 02, 2025 am 12:16 AM

Tostartaphpsession, usesession_start () atthescript'sbeginning.1) placeitbeforeanyoutputtosetthesessioncookie.2) usesessionsforusererdatalikeloginstatusorshoppingcarts.3)

Apakah regenerasi sesi, dan bagaimanakah ia meningkatkan keselamatan?Apakah regenerasi sesi, dan bagaimanakah ia meningkatkan keselamatan?May 02, 2025 am 12:15 AM

Penjanaan semula sesi merujuk kepada menjana ID sesi baru dan membatalkan ID lama apabila pengguna melakukan operasi sensitif dalam kes serangan tetap sesi. Langkah-langkah pelaksanaan termasuk: 1. Mengesan Operasi Sensitif, 2. Menjana ID Sesi Baru, 3. Memusnahkan ID Sesi Lama, 4. Kemas kini maklumat sesi pengguna.

Apakah beberapa pertimbangan prestasi semasa menggunakan sesi PHP?Apakah beberapa pertimbangan prestasi semasa menggunakan sesi PHP?May 02, 2025 am 12:11 AM

Sesi PHP mempunyai kesan yang signifikan terhadap prestasi aplikasi. Kaedah pengoptimuman termasuk: 1. Gunakan pangkalan data untuk menyimpan data sesi untuk meningkatkan kelajuan tindak balas; 2. Mengurangkan penggunaan data sesi dan hanya menyimpan maklumat yang diperlukan; 3. Gunakan pemproses sesi yang tidak menyekat untuk meningkatkan keupayaan konkurensi; 4. Laraskan masa tamat tempoh sesi untuk mengimbangi pengalaman pengguna dan beban pelayan; 5. Gunakan sesi berterusan untuk mengurangkan bilangan data membaca dan menulis masa.

Bagaimana sesi PHP berbeza dari kuki?Bagaimana sesi PHP berbeza dari kuki?May 02, 2025 am 12:03 AM

Phpsessionsareserver-side, whilecookiesareclient-side.1) Sessionsstoredataontheserver, aremoresecure, andhandlelargerdata.2) cookiesstoredataontheclient, arelesssecure, andlimiteShorsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsionsforsions

Bagaimanakah PHP mengenal pasti sesi pengguna?Bagaimanakah PHP mengenal pasti sesi pengguna?May 01, 2025 am 12:23 AM

Phpidentifierauser'sSessionusingSessionCookiesandSessionIds.1) whensession_start () ISCALLED, phpGeneratesAuniquesessionIdstoredinacookienamedPhpsessidontheUserer'sBrowser.2) ThisIdallowsPhptoretRievesSessionDataFromtheserver.

Apakah beberapa amalan terbaik untuk mendapatkan sesi PHP?Apakah beberapa amalan terbaik untuk mendapatkan sesi PHP?May 01, 2025 am 12:22 AM

Keselamatan sesi PHP boleh dicapai melalui langkah -langkah berikut: 1. Gunakan session_regenerate_id () untuk menjana semula ID sesi apabila pengguna log masuk atau merupakan operasi penting. 2. Sulitkan ID sesi penghantaran melalui protokol HTTPS. 3. Gunakan session_save_path () untuk menentukan direktori selamat untuk menyimpan data sesi dan menetapkan kebenaran dengan betul.

Di manakah fail sesi php disimpan secara lalai?Di manakah fail sesi php disimpan secara lalai?May 01, 2025 am 12:15 AM

PhpsessionFileSarestoredIntHedirectorySpecifiedBySession.save_path, biasanya/tmponunix-likesystemsorc: \ windows \ temponwindows.tocustomethis: 1) usession_save_path ()

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.