Cara Aman Membuat Upload File Gambar

Cara Aman Membuat Upload File Gambar – Pada artikel sebelumnya Cara Mudah Membuat Upload File Website telah saya tunjukan bagaimana cara membuat upload file menggunakan method versi icaksama.com. Dan Pada artikel kali ini saya akan menunjukan bagaimana cara melakukan upload file gambar yang aman menggunakan metode atau fungsi versi icaksama.com. Perhatikan program form di bawah ini :

<form action="demo.php" method="POST" enctype="multipart/form-data">
  <input type="file" name="pic" accept="image/*">
  <input type="submit">
</form>

Program diatas adalah form upload khusus untuk memilih jenis file bertipe gambar. Kenapa ? Silahkan baca alasannya Cara Membatasi Jenis File Upload
Coba kamu perhatikan pada bagian  enctype=”multipart/form-data”, Bagian tersebut wajib dimasukan jika form memiliki inputan bertipe file atau tag input untuk mengupload file.

icaksama cara aman upload file gambar

Membuat Upload File Gambar

Program dibawah ini adalah fungsi atau method versi icaksama.com yang hanya digunakan untuk mengupload file berekstensi gambar. Method ini saya beri nama imageUpload. Metode ini telah dilengkapi dengan pendeteksian apakah file bertipe jpg atau png serta fitur rename file yang di upload sesuai tanggal dan waktu saat user mengupload file. Selain itu juga terdapat pendeteksian apakah benar-benar file memiliki ukuran gambar yang valid. Kenapa saya membuat seperti ini ? Karena seringnya hacker memanfaatkan fitur upload dalam meretas website. Untuk itu diperlukan keamanan berlapis.

function imageUpload($postfile, $folder) {
 $namafile = $postfile;
 $namafile_name = $namafile['name'];
 $namafile_type = $namafile['type'];
 $namafile_size = $namafile['size'];
 $a = date('Ymd-his');
 if (getimagesize($namafile['tmp_name'])) {
  if (!empty($namafile_type)) {
   switch ($namafile_type) {
    case "image/jpeg":
     move_uploaded_file($namafile['tmp_name'], "$folder/$namafile_name");
     $namafile1 = $a.
     ".jpg";
     rename("$folder/$namafile_name", "$folder/$namafile1");
     return $namafile1;
     break;
    case "image/png":
     move_uploaded_file($namafile['tmp_name'], "$folder/$namafile_name");
     $namafile1 = $a.
     ".png";
     rename("$folder/$namafile_name", "$folder/$namafile1");
     return $namafile1;
     break;
    default:
     echo "<script type=\"text/javascript\">
     alert(\"File Foto Harus Bertipe (*.jpg, *.png) !\"); < /script>";
     }
   }
  } else {
   die('Hacker! Masukan file gambar yang valid!');
  }
 }

Perhatikan program diatas, kamu dapat menambahkan jenis file baru yang di filter dengan cara menambah baris program case “filter ekstensi”. Sebagai contoh perhatikan program dibawah ini :

case "image/gif" :
  move_uploaded_file($namafile['tmp_name'], "$folder/$namafile_name");
  $namafile1 = $a . ".gif";
  rename("$folder/$namafile_name", "$folder/$namafile1");
  return $namafile1;
  break;

Pada program diatas saya menambahkan filterisasi baru dengan file bertipe GIF. Jadi bentuk programnya sebagai berikut :

function imageUpload($postfile, $folder) {
 $namafile = $postfile;
 $namafile_name = $namafile['name'];
 $namafile_type = $namafile['type'];
 $namafile_size = $namafile['size'];
 $a = date('Ymd-his');
 if (getimagesize($namafile['tmp_name'])) {
  if (!empty($namafile_type)) {
   switch ($namafile_type) {
    case "image/jpeg":
     move_uploaded_file($namafile['tmp_name'], "$folder/$namafile_name");
     $namafile1 = $a.
     ".jpg";
     rename("$folder/$namafile_name", "$folder/$namafile1");
     return $namafile1;
     break;
    case "image/png":
     move_uploaded_file($namafile['tmp_name'], "$folder/$namafile_name");
     $namafile1 = $a.
     ".png";
     rename("$folder/$namafile_name", "$folder/$namafile1");
     return $namafile1;
     break;
    case "image/gif":
     move_uploaded_file($namafile['tmp_name'], "$folder/$namafile_name");
     $namafile1 = $a.
     ".gif";
     rename("$folder/$namafile_name", "$folder/$namafile1");
     return $namafile1;
     break;
    default:
     echo "<script type=\"text/javascript\">
     alert(\"File Foto Harus Bertipe (*.jpg, *.png) !\"); < /script>";
     }
   }
  } else {
   die('Hacker! Masukan file gambar yang valid!');
  }
 }

Pada kasus tertentu, tidak semua filterisasi file berjalan dengan baik. Hal ini disebabkan karena tidak suportnya browser yang digunakan. Jadi lebih baik cek terlebih dahulu apakah filterisasi berjalan normal 🙂

Ayo! Segera daftarkan email kamu untuk berlangganan!

Leave a comment