Sabtu, 05 September 2009

Security Upload file dengan PHP

Beberapa hal penting yang sering digunakan sebagai security dalam upload file PHP diantaranya :

1. Ukuran besar File Upload tidak boleh melebihi suatu ukuran / size tertentu
Mengapa : Karena pengembang sistem pasti sudah berpikir matang-matang akan kapasitas hardisk server yang akan digunakan untuk menampung file-file upload. Jika ukuran file yang diupload tidak dibatasi, kemungkinan besar kapasitas hardisk server akan cepat habis.

Dengan adanya kebijakan ukuran file terbatas, Pengguna yang melakukan upload file tentunya akan berusaha file yang diuploadnnya berukuran lebih kecil dari pembatasan yang ditentukan.

2. Dimensi File Upload tidak boleh melebihi suatu dimensi tertentu (contohnya file gambar)
Mengapa : Serupa dengan Ukuran File, dimensi file yang besar tentunya sejalan dengan ukuran file.

Contoh : File Gambar berekstensi JPEG, ukuran 2048x1536 adalah file gambar yang memiliki dimensi cukup besar apabila digunakan dalam kegiatan Upload File. Maka pengembang sistem akan membatasi ukuran file gambar yang dapat diupload misalnya 1024 x 768.

3. Tipe File Upload tidak boleh File berektensi PHP
Mengapa : Bahaya..!!!. Hacker akan dengan mudah mengupload file PHP miliknya, lalu bagaimana jika Hacker menghapus file-file milik kita dengan kemampuan programming yang ada dalam file PHP nya tersebut..? Tentunya hal ini tidak kita inginkan.

4. Memperhatikan File Exist / sudah ada file bernama sama di Server.
Mengapa : Hal ini tentunya agar file sebelumnya yang sudah ada tidak digantikan oleh file lain dengan nama yang sama. Bayangkan jika file foto seseorang dapat ditimpa dan digantikan dengan nama file serupa, tetapi isinya adalah gambar porno..

Hal yang dijelaskan disini kemungkinan masih sangat kurang dibandingkan apa yang ada di dunia nyata. Security sangat diperketat dalam masalah Upload File. Facebook dan website besar lain tentunya sudah memikirkan hal ini lebih jauh dari apa yang dibeberkan diatas.

Untuk syntaks coding terkait security File Upload dengan PHP adalah sebagai berikut :

Nama property upload adalah fupload -- > <input type=file name=fupload />


$target = "uploads/";
$target = $target . basename( $_FILES['fupload']['name']) ;
$ok=1;

$tipe_file = $_FILES['fupload']['type'];
$lokasi_file = $_FILES['fupload']['tmp_name'];
$nama_file = $_FILES['fupload']['name'];
$ukuran_file = $_FILES['fupload']['size'];

//This is our size condition
if ($fupload_size > 2000000){
echo "Your file is too large.<br>";
$ok=0;
}

//This is our limit file type condition
if ($tipe_file == "text/php" or $fupload_type == "image/gif" or
$tipe_file == "image/jpeg" or
$tipe_file == "image/pjpeg" or
$tipe_file == "image/png")
{
echo "Dokumen Dilarang<br />";
$ok=0;
}

//please change the uploads below with $target !!!

if (file_exists('uploads/' . $_FILES['fupload']['name']))
{
echo $_FILES['fupload']['name'] . " already exists. ";
$ok=0;
}


//Here we check that $ok was not set to 0 by an error
if ($ok==0) {
Echo "Sorry your file was not fupload";
}

else { //If everything is ok we try to upload it
if(move_uploaded_file($_FILES['fupload']['tmp_name'], $target)) {
echo "The file ". basename( $_FILES['fupload']['name']). "
has been upload";

Query can be here

} // end succes upload
else {
"Sorry, there was a problem uploading your file.";
}
}
Related Post:

Tidak ada komentar: