Lebih Dalam Mengenal POST dan GET Untuk Keamanan WEB

POST VS GET

  1. Perkenalan
  2. 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.

  3. Metode GET
  4. 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>
      
    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
    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.

    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.

  5. Metode POST
  6. $_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
    Ketika user mengeklik 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

    Yang Harus diperhatikan dalam pemilihan metode GET

    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.

  7. Kesimpulan
  8. 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

Postingan terkait:

Belum ada tanggapan untuk "Lebih Dalam Mengenal POST dan GET Untuk Keamanan WEB"