


Penapisan data PHP: menapis muat naik fail dengan berkesan
Penapisan Data PHP: Penapis muat naik fail dengan berkesan
Muat naik fail ialah salah satu fungsi biasa dalam pembangunan web, tetapi muat naik fail juga merupakan salah satu risiko keselamatan yang berpotensi. Penggodam boleh menggunakan fungsi muat naik fail untuk menyuntik kod hasad atau memuat naik fail yang dilarang. Untuk memastikan keselamatan tapak web, kami perlu menapis dan mengesahkan fail yang dimuat naik oleh pengguna dengan berkesan.
Dalam PHP, kami boleh menggunakan satu siri fungsi dan teknik untuk menapis dan mengesahkan fail yang dimuat naik pengguna. Berikut ialah beberapa kaedah dan contoh kod yang biasa digunakan:
- Menyemak jenis fail
Sebelum menerima fail yang dimuat naik oleh pengguna, kita perlu menyemak jenis failnya. Cara paling mudah ialah menggunakan atribut type
dalam pembolehubah global $_FILE
PHP untuk membuat pertimbangan. $_FILE
全局变量中的type
属性进行判断。
$fileType = $_FILE['file']['type']; if($fileType == 'image/jpeg' || $fileType == 'image/png' || $fileType == 'image/gif'){ // 文件类型合法,可以继续处理 } else { // 文件类型不合法,拒绝上传 }
- 检查文件大小
为了防止用户上传过大的文件,我们需要限制文件的大小。可以使用$_FILE
全局变量中的size
属性进行检查。
$fileSize = $_FILE['file']['size']; $maxSize = 1024 * 1024; // 最大允许上传1MB的文件 if($fileSize < $maxSize){ // 文件大小合法,可以继续处理 } else { // 文件大小超过限制,拒绝上传 }
- 随机生成文件名
为了防止文件名冲突和提高安全性,我们应该为每个上传的文件生成一个随机的文件名。
$fileExtension = pathinfo($_FILE['file']['name'], PATHINFO_EXTENSION); $randomFileName = uniqid().'.'.$fileExtension; // 将$file保存到服务器上的路径 move_uploaded_file($_FILE['file']['tmp_name'], 'uploads/'.$randomFileName);
- 检查文件内容
除了文件类型和大小之外,我们还需要对文件内容进行验证。可以使用finfo_file
$finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $_FILE['file']['tmp_name']); if($mime == 'image/jpeg'){ // 文件内容合法,可以继续处理 } else { // 文件内容不合法,拒绝上传 } finfo_close($finfo);
- Semak saiz fail
- Untuk menghalang pengguna daripada memuat naik fail yang terlalu besar, kami perlu mengehadkan saiz fail. Anda boleh menggunakan atribut
size
dalam pembolehubah global $_FILE
untuk menyemak. $fileName = preg_replace('/[^A-Za-z0-9-]/', '', $_FILE['file']['name']);
Jana nama fail secara rawak
Untuk mengelakkan konflik nama fail dan meningkatkan keselamatan, kami harus menjana nama fail rawak untuk setiap fail yang dimuat naik.rrreee
- Semak kandungan fail🎜Selain jenis dan saiz fail, kami juga perlu mengesahkan kandungan fail. Fail boleh disemak menggunakan fungsi
finfo_file
. 🎜rrreee🎜🎜Tapis aksara khas🎜🎜🎜Apabila memproses nama fail, kita perlu memberi perhatian untuk menapis aksara khas dalam nama fail untuk mengelakkan traversal laluan dan kelemahan membaca fail sewenang-wenangnya. 🎜rrreee🎜Ringkasan:🎜🎜Melalui penapisan dan pengesahan jenis fail, saiz, kandungan dan nama fail yang berkesan, kami boleh menghalang pengguna dengan berkesan daripada memuat naik fail berniat jahat dan meningkatkan keselamatan aplikasi web. Semasa memproses muat naik fail, pastikan anda mempertimbangkan sepenuhnya pelbagai potensi risiko keselamatan dan mengambil langkah keselamatan yang sesuai. 🎜🎜Di atas ialah beberapa kaedah biasa dan contoh kod untuk menapis muat naik fail dengan berkesan dalam penapisan data PHP. Saya harap ia boleh membantu anda. 🎜Atas ialah kandungan terperinci Penapisan data PHP: menapis muat naik fail dengan berkesan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

CakePHP ialah rangka kerja MVC sumber terbuka. Ia menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP mempunyai beberapa perpustakaan untuk mengurangkan beban tugas yang paling biasa.

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6
