Dengan PHP, kita bisa membuat aplikasi sederhana untuk kompresi file ke dalam bentuk ZIP.
Mengapa kita harus bisa membuat script untuk kompresi file ini, toh di hampir setiap komputer sudah ada software kompresi, meskipun hasil crack-crack an :-). Untuk menjawab ini, saya ambil contoh penerapannya. Kalau Anda merupakan adsense publisher, maka setiap interval waktu tertentu Anda akan dikirimi file report earning dalam format CSV yang terkompresi dalam bentuk ZIP file. Apakah setiap pegawai Google Adsense melakukan kompresi setiap laporannya dan mengirimkan satu-persatu file report ini ke semua publishernya secara manual via email? Saya yakin tidak… Mekanisme ini dibuat secara otomatis dengan menggunakan program atau script. Nah… ini salah satu contoh saja alasan mengapa kita juga harus bisa membuat aplikasi untuk kompresi file ZIP via web.
Alasan yang lain… misalkan Anda orang yang ‘baik’ dan tidak ingin menggunakan software crack-crack an untuk kompresi, maka Anda bisa membuat sendiri aplikasinya dengan PHP :-)
Pada tutorial ini akan dibahas bagaimana cara membuat script PHP untuk melakukan kompresi file ZIP. Skenario untuk studi kasus yang diambil di sini adalah: user nantinya akan memilih file yang akan dikompresi melalui form, setelah itu ia mengklik tombol submit, dan hasilnya akan diperoleh file kompresi ZIP dari file yang dipilih tadi. Simple bukan…
Oya… untuk PHP yang dijalankan di Windows OS, pastikan Anda telah mengaktifkan php_zip.dll di file php.ini. Bagaimana caranya? Caranya adalah buka terlebih dahulu file php.ini, bila Anda menggunakan AppServ caranya klik START > AppServ > Configuration Server > PHP Edit The php.ini Configuration File. Selanjutnya cari baris extension=php_zip.dll. Pastikan tidak ada tanda titik koma (;) di depan baris tersebut. Bila sudah, simpan kembali php.ini, dan restart Apache (Web Server).
Nah… sekarang kita mulai membuatnya.
Pertama-tama kita buat form untuk memilih file yang akan dikompresi.
Selanjutnya kita buat script kompresi.php nya.
1.2.
3.$namaFile = $_FILES['file']['name'];
4.$tmpName = $_FILES['file']['tmp_name'];
5.
6.$fp = fopen($tmpName, 'r');
7.$isiFile = fread($fp, filesize($tmpName));
8.fclose($fp);
9.
10.$zip = new ZipArchive();
11.$fileKompresi = $namaFile.".zip";
12.
13.$kompresi = $zip->open($fileKompresi, ZIPARCHIVE::CREATE);
14.if ($kompresi)
15.{
16. $zip->addFromString($namaFile, $isiFile);
17. $zip->close();
18. echo "Kompresi Sukses";
19.}
20.else echo "Kompresi Gagal";
21.?>
Keterangan:
* Baris ke-3 digunakan untuk mendapatkan nama file yang akan dikompresi. Nama file ini nanti akan digunakan untuk memberi nama file hasil kompresi (lihat baris ke-11).
* Baris ke-4 digunakan untuk menyimpan temporary file yang akan dikompresi. File temporary ini nantinya akan dibaca isinya (baris ke-6 s/d 8).
* Baris ke-10 digunakan untuk membuat obyek ZipArchive.
* Baris ke-13 digunakan untuk membuat file kompresi.
* Baris ke-14 melakukan pengecekan, bila file kompresi berhasil dibuat maka isi file asli yang dibaca akan dimasukkan ke dalam file kompresi. Sedangkan bila gagal, muncul pesan kegagalan.
Dari contoh ini, Anda bisa kembangkan sendiri bagaimana jika kita ingin mengkompresi beberapa file menjadi satu.
OK… mudah-mudahan info bermanfaat.
Membuat Script PHP untuk Kompresi File ZIP
Cek Bug PHP Script

Jumpa lagi dengan saya di tutorial php. Setelah terampungkan script php yang telah kita buat ada kalanya bug-bug yang tidak diinginkan bercokol di sela-sela script yang telah siap dionlinekan. Dan tentunya bug ini bisa berakibat fatal sehingga dapat dimanfaatkan oleh para intruder-intruder yang berusaha untuk mengekploitasi system.
Dan siapa sangka script php yang telah dibuat itu aman dari kerentanan dalam masalah security. :D~~~
Lalu, bagaimana mencegah sang hacker mengekploitasi, bahkan merusak website anda, bagaimana mencegah secara pasti dan mengetahui script yang telah dibuat memiliki bug yang fatal, bagaimana menangani itu semua ??
Sebelum kita beralih maju ke langkah selanjutnya ada baiknya untuk mengenali bug popular yang paling sering diexploitasi.
Penulis akan mencoba untuk memberikan sedikit penjelasan, bug yang sering dijumpai dalam aplikasi berbasis web khususnya Content Management system maupun yang lainnya. Di antaranya :
- XSS ( Cross Site Scripting )
- SQL Injection
- RFI ( Remote File Inclusion )
Cross Site Scriping
Lebih dikenal dengan sebutan XSS. Kesalahan ini terjadi karena tidak adanya filtering pada html maupun java script.
Tetapi pada dasarnya defacing ( perubahan kontent ) hanya terjadi disisi client saja. Yang paling fatal dari bug ini adalah anda dapat mencuri cookie kemudian menggunakannya untuk berbuat sesuatu yang … :D~~
Contohnya :
http://www.banksumsel.com
SQL Injection
SQL Injection sebenarnya terjadi karena seorang attacker yang mencoba melakukan inject query sql melalui form ataupun via address bar pada browser internet. Sebagai contohnya ketika penulis mencoba login sebagai admin pada situs pemerintah Sumatra Selatan ( http://www.sumsel.go.id ). Dengan menggunakan query ‘ or 1=1– penulis pun berhasil login. Pada dasarnya ‘ atau single quote dan or 1=1– itu berfungsi untuk membingungkan si server sql, sehingga yang dilakukan oleh server sql adalah menjalankan query ” select * “. Yang terjadi adalah penulis diloloskan untuk login sebagai admin.
Berikut adalah gambar yang penulis capture ketika penulis berhasil login sebagai admin pada situs http://www.sumsel.go.id

Gambar ini diambil sebelum penulis mengontak webmaster via email untuk mempatch script phpnya.
RFI ( Remote File Inclusion )
Sebelumnya silahkan membaca artikel fungsi require, require_once, include, dan include_one RFI sendiri terjadi karena kesalahan programmer ketika melakukan coding, yakni menggunakan variable dalam fungsi-fungsi tersebut. Apabila user memasukkan url evil script miliknya pada variable yang digunakan dalam fungsi require ataupun include, yang terjadi adalah evil script tersebut dapat dieksekusi secara remote, dengan kata lain, attacker dapat menjalan command di server milik anda untuk merubah konten situs atau bahkan merusaknya. :D~~
Untuk contohnya silahkan anda cari di www.milw0rm.com :D~
Keywordnya Remote File Inclusion. :D~
Pengecekan BUG
Pengecekan bug sendiri bisa dilakukan secara manual. Hmmm … tentunya ini akan memakan banyak waktu. Terbentuklah tools yang dapat secara cepat dan otomatis menemukan bug-bug yang terselip di php script secara tidak sengaja maupun sengaja. :D~
Pada dasarnya untuk mengecek bug dapat dilakukan secara online maupun offline. Penulis sarankan pengecekan bug ini dilakukan di localhost anda ( offline ) saja.
Cek Bug XSS
Tools untuk mengecek XSS pada script php milik anda adalah sebuah addons mozilla firefox yang disediakan secara gratis. Penginstallannya pun tergolong mudah, berikut juga cara penggunaannya.
Tools tersebut dapat anda download disini :
http://www.securitycompass.com/exploit_me/xssme/xssme-0.2.1.xpi
Cek Bug SQL Injection
Untuk periode saat ini defacing dengan SQL Injection digolongkan paling favorit dan tentunya paling banyak digunakan, mungkin karena penyerangan yang dilakukan cukup mudah, cukup memiliki dasar pengetahuan syntax sql. Lagi-lagi sebuah addons mozilla firefox yang cukup ampuh dan mudah digunakan telah disediakan untuk melakukan cek bug sql injection.
Anda dapat mendownloadnya disini :
http://www.securitycompass.com/exploit_me/sqlime/sqlime-0.2.xpi
Penggunaanya pun tidak terlalu sulit.
Cek BUG Remote File Inclusion
Sebelumya anda download terlebih dahulu scriptnya disini http://www.newhack.org/dl_jump.php?id
Setelah itu silahkan download active perl, compiler interpreter ini nantinya digunakan untuk menjalankan script inclusionscanner.pl.
Dan kemudian copykan inclusionscanner.pl tersebut ke direktori c:\perl\bin
Langkah selanjutnya :
1. Masukkan script yang akan anda scan kedalam sebuah direktori di c:\perl php.
ex : c:\perl\wordpress.
2. Masuk ke command prompt, start | run | cmd | enter
3. Setelah itu masuk ke direktory c:\perl\bin, cd c:\perl\bin
4. Jalankan scriptnya,
C:\Perl\bin>perl.exe inclusionscanner.pl
#Will check a directory for all includes and unsets
#Coded by Ironfist (ironsecurity.nl)
#Usage: create a folder in your perlfolder and put the files to be scanned in it
, next type the folder name below (eg myfolder)
#GIVES ERRORS WHEN CHECKING SUBFOLDERS: IGNORE THEM
Directory to read? c:\perl\wp
kemudian lihat hasilnya di c:\perl\bin\result.html
berikut hasil scan ketika penulis mencoba untuk melakukan cek inclusion pada wordpress-2.3.3 :
FOUND: require_once($locale_file);
in c:\perl\wp/wp-settings.php FOUND: require_once($import_root . ‘/’ . $file);
in c:\perl\wp/wp-admin/import.php FOUND: include_once($this->PluginDir . “class-smtp.php”);
in c:\perl\wp/wp-includes/class-phpmailer.php FOUND: include($lang_path.’phpmailer.lang-’.$lang_type.’.php’);
in c:\perl\wp/wp-includes/class-phpmailer.php FOUND: include($lang_path.’phpmailer.lang-en.php’);
in c:\perl\wp/wp-includes/class-phpmailer.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: include($template);
in c:\perl\wp/wp-includes/template-loader.php FOUND: require_once($_template_file);
in c:\perl\wp/wp-includes/theme.php
woww !!! :D~~ silahkan di exploitasi eh di patch script milik anda. :D~~
Ingat, jangan merusak, jangan berbuat vandal, jika anda menemukan bug di situs lain seperti yang telah saya sebutkan diatas, silahkan beritahu pihak admin.greetz to : ilmuwebsite staff, member ilmuwebsite,
