Rumah pembangunan bahagian belakang tutorial php Penapisan data PHP: menapis muat naik fail dengan berkesan

Penapisan data PHP: menapis muat naik fail dengan berkesan

Jul 29, 2023 pm 03:57 PM
php Muat naik fail Penapisan data

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:

  1. 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 {
    // 文件类型不合法,拒绝上传
}
Salin selepas log masuk
  1. 检查文件大小

为了防止用户上传过大的文件,我们需要限制文件的大小。可以使用$_FILE全局变量中的size属性进行检查。

$fileSize = $_FILE['file']['size'];
$maxSize = 1024 * 1024; // 最大允许上传1MB的文件

if($fileSize < $maxSize){
    // 文件大小合法,可以继续处理
} else {
    // 文件大小超过限制,拒绝上传
}
Salin selepas log masuk
  1. 随机生成文件名

为了防止文件名冲突和提高安全性,我们应该为每个上传的文件生成一个随机的文件名。

$fileExtension = pathinfo($_FILE['file']['name'], PATHINFO_EXTENSION);
$randomFileName = uniqid().'.'.$fileExtension;

// 将$file保存到服务器上的路径
move_uploaded_file($_FILE['file']['tmp_name'], 'uploads/'.$randomFileName);
Salin selepas log masuk
  1. 检查文件内容

除了文件类型和大小之外,我们还需要对文件内容进行验证。可以使用finfo_file

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILE['file']['tmp_name']);

if($mime == 'image/jpeg'){
    // 文件内容合法,可以继续处理
} else {
    // 文件内容不合法,拒绝上传
}

finfo_close($finfo);
Salin selepas log masuk

    Semak saiz fail
    1. 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']);
    Salin selepas log masuk

      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!

Kenyataan Laman Web ini
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

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

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

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

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

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

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

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

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

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

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.

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

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

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

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,

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

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

See all articles