21 September 2008

Implementasi metode HTTP GET dan HTTP POST pada PHP

Dalam web development, sering kali kita menemui komunikasi satu atau dua file web untuk mendapatkan suatu hal yang kita inginkan. Yang saya sebut komunikasi satu atau dua file dalamweb ini biasanya terbentuk atas satu form dan satu lagi merupakan validasi atau sebuah fileyang menjadi form sekaligus menjadi validator. Misal: form untuk submission guest book, atauform untuk submission login suatu aplikasi web. Dalam pengembangannya komunikasi satu atau dua form ini kemudian menjadi semakin canggih dengan masuknya teknologi ajax (Asynchronous JavaScript and XML).

Kali ini kita hanya akan membahas teknik dasar komunikasi form dalam web development, dan kali ini kita juga akan menggunakan php sebagai referensi pembahasan komunikasi form. Kita tidak akan membahas ajax kali ini, mungkin lain waktu kita akan membahas ajax dalam kesempatan yang lain.

Pada dasarnya komunikasi form dalam web development menggunakan beberapa metode. Diantaranya adalah, Metode GET, PUT, POST, DELETE, CONNECT, TRACE. Kali ini kita akan membahas dua metode yang sering dipakai dalam komunikasi form dalam web aplikasi, yaitu metode GET dan metode POST Kedua metode ini mempunyai keunggulan dan kekurangan masing-masing. Pemilihan antara dua metode ini bergantung pada kebutuhan kita nantinya dalam mengembangkan suatu aplikasi webGambar 1 :


METODE HTTP GET :

Secara praktikal metode ini mengambil paramater-parameter yang terlihat nyata pada urlketika satua atau dua buah form berinteraksi, untuk kemudian paramater-parameter tersebut menjadi suatu syarat untuk menjalankan suatu proses dalam form validasinya. Kita dapat menemui metode get ini dalam suatu web aplikasi ketika kita mendapati dalam url seperti contoh berikut : http://www.mysite.com/login.php?uid=1234568Angka 1234568 itu adalah nilai dari paramater uid yang dilemparkan oleh form. Jadi bisa disimpulkan bahwa dalam suatu web aplikasi jika parameter dan nilainya dapat terlihat secara jelas dalam url maka komunikasi yang terjadi menggunakan metode http get.

Bagaimana cara php dalam mengimplementasikan metode http get ini ? Ok kita akan mencoba melakukan percobaan kecil dengan menggunakan dua buah file. File pertama sebagai form-nya dan file kedua sebagai validasinya. Perhatikan file pertama dibawah ini sebagai formnya, file : form1.html 

kemudian perhatikan validator dari form keduanya validate.php,


Jika kita ingin menjalankan aplikasi kecil tersebut kita bisa menjalankan file form1.htm dan tampilannya akan menjadi seperti ini, Gambar 1:

jika kita isi masing-masing text box tersebut kemudian kita tekan tombol masuk maka terjadilah komunikasi dua form tersebut dan demikian hasil yang bisa kita dapat, Gambar 2:

Ok sekarang kita bahas saja aplikasi kecil ini :

Pada form1.html kita dapat melihat pada baris <form method="get" action="validate.php"> pada baris ini kita bisa melihat bahwa form yang kita gunakan menggunakan metode get dan form tujuan atau form validatornya adalah validate.php. Yang harus kita pahami adalah jika kita ingin menggunakan metode http get pada web aplikasi kita, maka form yang kita definisikan menggunakan metode get seperti diatas. Sementara tampilan pada web aplikasi kita adalah standar html biasa dengan dua input, dimana yang satu merupakan berupa text dan satu lagi berupa password, dan sebuah tombol sebagai sebuah trigger komunikasi dua form tsb.

Kemudian kita akan melihat bagaimana php menangani metode get ini dalam programmingnya pada barisan kode pada file validate.php. Sebelumnya coba kita perhatikan gambar 2, pada url yang ada pada gambar tersebut terdapat tulisan seperti ini : ....../validate.php?user=mojo&pass=mojo99, begitulah cara kerja metode http getsemua paramater dan nilai parameter tersebut ditampilkan dalam url sehingga kita bisa melihat secara jelas parameter dan nilai dari parameter tsb, sesuatu menyembul dalam benak anda ? Ok nanti kita bahas sesuatu yang menyembul tsb.

Sekarang perhatikan cara php menangani komunikasi 2 file tsb, masing-masing nilai parameter diinisialisasikan kepada sebuah variabel dengan cara seperi ini:

  $user = $_GET["user"];

$pass = $_GET["pass"];

lalu kemudian mencetak 2 variabel yang sudah terisi nilainya tersbut ke dalam layar dengan cara seperti ini :

   echo "$user.........

dimana $user adalah variabel untuk diisi nilai yang ditangkap dengan cara $_GET[“user”] dan $pass yang ditangkap dengan cara $_GET[“pass”]. User dan pass yang ada dalam tanda kurung [] adalah parameter yang dilempar dari form1.html. Jadi demikianlah cara php menangani komunikasi form yang menggunakan metode http get.

Selaras dengan sesuatu yang tadi mungkin menyembul dalam benak anda, kita perhatikan bahwa berbahaya sekali metode http get ini jika kita terapkan dalam web aplikasi kita, user akan dengan gampang melihat nilai-nilai dan parameter-parameter yang terlempar dari komunikasi form dalam web aplikasi kita. Hal inilah yang dapat menyebabkan seseorang mengeksploitasi suatu web dengan cara menginjeksi url yang ada.

Banyak developer web aplikasi masih tetap menggunakan metode http get ini, dan usaha dari mereka untuk menjaga keamanan web yang mereka buat ini adalah dengan cara meng-enkripsi url yang tampil, baik parameter maupun nilai dari parameter yang ada. Keamanan ini biasanya dibuat berlapis-lapis dengan menggunakan metode enkripsi string dari mulai sha, base64, md5, dan metode-metode enkripsi yang lain, atau mungkin metode enkripsi yang mereka buat sendiri.

METODE HTTP POST:
Sekarang kita akan melangkah pada metode http selanjutnya yaitu metode http post, untuk mendapatkan gambaran tentang metode yang satu ini langusng saja kita lihat dua form diatas yang kita modifikasi sedikit. sehingga menjadi seperti ini:

dan ini adalah validate2.php yang juga kita rubah sedikit dari file validate.php di atas: file : validate2.php


kemudian kita jalankan aplikasi tsb dengan cara membuka form2.html, setelah kita masukkan text-text yang tersedia, kemudian kita klik tombol masuk maka akan kita dapati hasil seperti gambar berikut, gambar 3:

adakah perbedaan antara gambar 2 dan gambar 3 disana? Yup, benar ada perbedaan yang terjadi pada dua gambar tersebut, pada gambar 3 kita tidak melihat ada paramater-paramater dan nilai-nilainya tercetak disana, namun hasil cetakan pada body halaman web tetap sama. Demikianlah metode http post, metode ini tidak akan mencetak paramater-parameter dan nilai dari paramater tersebut dalam url, sehingga beberapa developer merasa bahwa metode ini lebih aman dari pada metode http get.

Dari sisi kode, pada form2.html perbedaan terjadi hanya pada baris <form method="post" action="validate2.php"> ini saja, untuk membuat sebuah form dimana kita akan memakai metode http post, intinya kita hanya mengganti nilai dari method menjadi post saja. Sementara dalam form validatornya dalam hal ini validate2.php kita cukup merubah $_GET menjadi $_POST saja, sebab memang beginilah cara php menangani komunikasi form yang menggunakan metode http post.

Sekarang tinggal anda menyimpulkan sendiri lebih aman mana ketika kita menggunakan metode http dalam membuat komunikasi form dalam sebuah web aplikasi. Dari sana anda juga yang akan dapat menarik kesimpulan apa keuntungan dan kerugian jika kita menggunakan salah satu metode http tersebut dalam web aplikasi kita. Sepanjang semua jawaban dapat anda pertanggungjawabkan secara benar dan masuk akal, maka anda akan selalu benar dalam argumentasi anda. Terima kasih dan Semoga Bermanfaat....!!!


Menteng, 21 September 2008

JOSESCALIA


No comments: