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.
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.
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.
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
Halang penulisan ganti fail
Halang pelaksanaan kod hasad
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.
Log dan pemantauan
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!