Lebih Dalam Mengenal POST dan GET Untuk Keamanan WEB

By | Januari 29, 2019

Pada element form terdapat 2 method yang dapat digunakan untuk mengirimkan data dari halaman form ke server. GET dan POST adalah metode pengiriman data dari suatu client ke server melalui browser. Masing-masing diterima oleh server dalam bentuk variabel array $_GET dan $_POST yang bersifat public. jika method post yang dipilih maka variabel nilai yang dimasukkan di dalam form ketika dikirim ke server tidak akan ditampilkan dibagian address bar browser. Sedangkan jika method get yang akan digunakan, maka semua variabel nilai yang diisikan didalam form yang ketika dikirim akan ditampilkan dibagian address bar browser.

Metode GET

Metode GET adalah sebuah fungsi yang digunakan untuk mengumpulkan nilai dari sebuah form yang dikirimkan menggunakan GET. Informasi yang dikirimkan dari sebuah form menggunakan metode GET dapat dilihat oleh semua orang, Maksudnya adalah Nilai dari form tersebut dapat dilihat dengan jelas pada jendela address bar pada browser. Metode ini mimiliki batasan terhadap banyaknya informasi yang akan dikirimkan. Metode GET tidak cocok untuk nilai variabel yang sangat besar. Tidak dapat digunakan untuk menyimpan variabel yang nilainya lebih dari 2000 karakter.
Berikut contoh untuk menggunakan metode GET. Berinama file dengan nama index.html

   <!DOCTYPE html>   <html>    <head></head>    <body>     <form action="get.php" method="get">      <table>    <tr>     <td>Nama</td><td>: <input type="text" name="nama"></td>    </tr>    <tr>     <td>Umur</td><td>: <input type="text" name="umur"></td>    </tr>    <tr>     <td>&nbsp;</td><td>&nbsp; <input type="submit" name="submit" value="submit" ></td>    </tr>      </table>     </form>    </body>   <html>   

Baca Juga: Login Seasion di PHP MySQLi

Kemudian kita membuat file get.php untuk menampilkan nilai variabel yang telah diinputkan

   <?php    if(isset($_GET['submit'])){     echo "Selamat Datang ".$_GET['nama']."<br>";     echo "Umur anda sekarang ".$_GET['umur'];    }   ?>   

File index.html akan menghasilkan tampilan seperti dibawah ini
tampilan_get

Ketika user mengeklik tombol submit, url akan mengirimkan nilai dari variabel tersebut ke server dan ditampilkan di get.php, di address bar terlihat nilai dari variabel.
tampilan_get2

Yang Harus diperhatikan dalam pemilihan metode GET

  1. Programer harus berhati-hati dengan masalah security saat mengirimkan variabel melalui url, karena nama variabel dan nilainya akan tampak jelas oleh user. User dengan leluasa memasukkan nilai suatu variabel dengan karakter yang bisa membahayakan website bahkan database.
  2. Pengiriman variabel melalui metode GET hanya efisien untuk jumlah data yang sedikit. dapat dibayangkan berapa panjang url yg harus dibentuk untuk menampung jumlah data yang banyak. Sementara setiap browser memiliki batas maksimum panjang url yang dapat dikirim.
  3. Disarankan melakukan tahap sanitize terlebih dahulu terhadap variabel $_GET sebelum diproses.

Baca Juga: Cara Membuat Website Dengan PHP

Metode POST

$_POST digunakan untuk mengumpulkan nilai variabel dari sebuah form yang dikirimkan menggunakan metode post. Informasi yang dikirimkan dari sebuah form menggunakan metode POST tidak dapat dilihat oleh orang lain di jendela address bar di browser dan tidak memiliki pembatasan pada banyaknya informasi yang dikirim. Ukuran default nilai metode POST adalah 8 Mb. Untuk mengubahnya dapat dilakukan pada pengaturan POST_MAX_SIZE didalam file PHP.ini

Berikut contoh untuk menggunakan metode POST. Berinama file dengan nama index.html

<!DOCTYPE html>   <html>    <head></head>    <body>     <form action="post.php" method="post">      <table>    <tr>     <td>Nama</td><td>: <input type="text" name="nama"></td>    </tr>    <tr>     <td>Umur</td><td>: <input type="text" name="umur"></td>    </tr>    <tr>     <td>&nbsp;</td><td>&nbsp; <input type="submit" name="submit" value="submit" ></td>    </tr>      </table>     </form>    </body>   <html>

Kemudian kita membuat file post.php untuk menampilkan nilai variabel yang telah diinputkan

<?php    if(isset($_POST['submit'])){     echo "Selamat Datang ".$_POST['nama']."<br>";     echo "Umur anda sekarang ".$_POST['umur'];    }   ?>

File index.html akan menghasilkan tampilan seperti dibawah ini
tampilan_post

Ketika user meng-klik tombol submit, url akan mengirimkan nilai dari variabel tersebut ke server dan ditampilkan di post.php, di address bar tidak akan terlihat nilai dari variabel
tampilan_post2

Yang Harus diperhatikan dalam pemilihan metode POST

  1. Sama seperti metode GET, Programer harus berhati hati dengan masalah security. Seseorang dapat mengisi sembarang nilai dari suatu field sehingga dapat membahayakan website bahkan database.
  2. Disarankan melakukan tahap sanitize terlebih dahulu terhadap variabel $_POST sebelum diproses.

Baca Juga: Cara Upload gambar dengan Thumbnail pada PHP

Perbedaan GET dan POST pada PHP

Secara garis besar dapat kita simpulkan bahwa perbedaan dari metode GET dan metode POST adalah

  GET POST
History Dihistory parameternya tetep karena merupakan bagian dari URL Parameter tidak disimpan dalam browser
Bookmarked Dapat di bookmark Tidak dapat di bookmark
Tombol Kembali tidak dapat dikirim ulang ke server jika HTML disimpan dalam cache browser. Biasanya browser memberitahu pengguna bahwa data diajukan kembali
Encoding type (enctype attribute) application/x-www-form-urlencoded multipart/form-data or application/x-www-form-urlencoded Use multipart encoding for binary data.
Parameters Dapat mengirim tetapi data parameter terbatas Dapat mengirim parameter, termasuk meng-upload file, ke server.
Hacked Mudah untuk hack Sangat sulit di hack
Restrictions on form data type Ya, hanya karakter ASCII yang diijinkan Tidak dibatasi, data binar apapun diijinkan
Security GET kurang aman dibandingkan dengan POST karena data yang dikirim adalah bagian dari URL. Jadi itu disimpan dalam history dan server log browser di plaintext. POST sedikit lebih aman daripada GET karena parameter tidak disimpan dalam riwayat browser atau di log web server.
Restrictions on form data length Ya, karena bentuk data di URL dan URL panjang dibatasi. Sebuah batas panjang URL yang aman 2048 karakter tapi bervariasi oleh browser dan web server. Tidak dibatasi
Usability Metode GET tidak boleh digunakan saat mengirim password atau informasi sensitif lainnya. Metode POST digunakan saat mengirim password atau informasi sensitif lainnya
Visibility Metode GET terlihat untuk semua orang (itu akan ditampilkan di address bar browser) dan memiliki batasan pada jumlah informasi untuk mengirim. Metode POST variabel tidak ditampilkan dalam URL.
Cached dapat dicached Tidak dapat dicached