Codeigniter3 Güvenli upload formu nasıl olur ?
2
●110
- 01-02-2023, 00:12:07Codeigniter3 tabanlı bir yazılıma upload formu eklemem lazım image ve pdf upload edilebilecek. Shell gibi zararlı şeylerin upload edilebilmesini nasıl engelleyebilirim. Bildiiğim kadarıyla shelleri imaj olarak göstererek yükleyebiliyorlar.Örnek olan arkadaşlar paylaşırsa sevinirim
- 01-02-2023, 01:56:30
<?php // Dosya Yükleme Kontrolleri $config['upload_path'] = './uploads/'; // Dosyaların yükleneceği dizin $config['allowed_types'] = 'pdf|png'; // İzin verilen dosya türleri $config['max_size'] = 100; // İzin verilen maksimum dosya boyutu (KB cinsinden) $config['encrypt_name'] = TRUE; // Yüklenen dosyaların adını şifrelemek için true değerini atayın // Yükleme bibliyoteki yüklenir $this->load->library('upload', $config); // Dosya yükleme işlemi if (!$this->upload->do_upload('userfile')) { // Hata durumunda hata mesajını görüntüleyin $error = array('error' => $this->upload->display_errors()); print_r($error); } else { // Başarılı durumda dosya bilgilerini alın $data = array('upload_data' => $this->upload->data()); $file_path = $data['upload_data']['full_path']; // Dosya içeriğini inceleyin $file_contents = file_get_contents($file_path); if (preg_match('/(<?php|system(|shell_exec(|exec(|passthru(|eval()/', $file_contents)) { // Tehlikeli içerik tespit edildi, dosyayı silin unlink($file_path); echo 'Tehlikeli içerik tespit edildi, dosya silindi.'; } else { // Dosya güvenli echo 'Dosya güvenli ve yüklendi.'; } } ?> - 13-02-2023, 00:46:20codeigniter3 kendi file uploadunu kullandığında zaten mime_content_type ile allowed_types da belirtilen uzantıların kontrolunu yapar.
ben ekstra kontrol etmek istiyorum derseniz de görsellerin boyutlarını alıp aynı boyutta resize işlemine sokabilirsiniz. gerçekleşmezse görsel değildir veya uzantısı png dir ama içi jpg dir yada tersi.
pdf için de ilk dört satır %PDF değilse dosya pdf değildir. %PDF-1.5 gibi - den sonra versiyonu yazar.