Cookie
HTTP disebut juga sebagai stateless protocol yang artinya bahwa website tidak mempertahankan status pada setiap HTTP Request, dengan kata lain setiap HTTP Request sama sekali tidak terkait dengan request sebelumnya ataupun sesudahnya. Protokol ini juga tidak mengharuskan server untuk menyimpan setiap informasi dari client.
Contoh lainnya adalah dalam stateless protocol, ketika browser melakukan request ke server dan server mengirim response kepada browser maka koneksi akan diakhiri. Server akan melupakan semua permintaan dari browser. Ketika browser melakukan request lagi dan server mengirim respons, koneksi akan diakhiri lagi, server melupakan semua permintaan dari browser dan begitu seterusnya.
Pada tahun 1994, muncul sebuah ide dari seorang programmer sekaligus pegawai Netscape bernama Lou Montulli. Pada saat itu dia sedang mengembangkan website e-commerce dan berfikir bagaimana cara untuk menyimpan status transaksi e-commerce pada setiap user yang melakukan transaksi tanpa harus kehilangan status tersebut Ketika browser di-refresh. Dari sinilah muncul istilah cookie.
Cookie pertama kali diperkenalkan pada Netscape Browser di tahun 1994, pada saat itu cookie digunakan untuk menghitung jumlah visitor pada website Netscape.
Cookie adalah sekumpulan data yang berasal dari website dan kemudian informasi ini disimpan /diinstall pada browser, artinya cookie ini disimpan pada sisi client. Dengan adanya cookie, server bisa mengingat sesuatu dari client untuk setiap HTTP Request.
Sebagai contoh,terdapat sebuah website dengan domain abcd.com, website ini memiliki fitur untuk mencatat visitor berdasarkan IP Address. Ketika client A mengunjungi website abcd.com dengan mengggunakan browser, maka website abcd.com akan menginstall cookie yang berisi IP Address Client. Jumlah visitor yang awalnya adalah 100 orang kemudian bertambah menjadi 101 orang. Kemudian client A melakukan refresh pada browser untuk mengunjungi kembali website abcd.com, namun jumlah visitornya tetap 101 orang. Mengapa demikian? Karena website abcd.com sudah menyimpan cookie pada browser di client A sehingga website abcd.com bisa mengingat bahwa client ini sudah pernah mengunjungi sebelumnya.
Cookie bekerja dengan cara server akan mengatur isi cookie di browser dengan menggunakan Header Set-Cookie pada HTTP response. Sebuah cookie biasanya berisi beberapa atribut seperti:
- Konten Cookie (custom dari server)
- Masa berlaku cookie
- Path
- Nama Domain
- Flags, ada dua jenis, yaitu HTTP only dan secure.
Berikut adalah contoh cookie yang di-set pada saat HTTP response.
HTTP/1.1 200 OK Date: Thu, 14 May 2020 08:21:49 GMT Content-Type: text/html; charset=UTF-8 Connection: close Cache-Control: no-cache, private Set-Cookie: ID=101; expires=Thu, 14-May-2020 10:21:49 GMT; Max-Age=7200; path=/; domain=.cyberarmy.id; httponly |
Jika kita jabarkan berdasarkan atribut dari contoh diatas, maka akan seperti berikut.
Konten Cookie | ID=101 |
Masa berlaku Cookie | expires=Thu, 14-May-2020 10:21:49 GMT |
Path | path=/ |
Nama Domain | domain=.cyberarmy.id |
Flags | httponly |
Setelah cookie sudah disimpan oleh browser, ketika kita Kembali mengunjungi website via browser, maka cookie ini akan dikirim kembali dari browser ke server. Jika cookie ini masih valid, server akan mengenali browser. “Oh browser ini sudah pernah saya kirimkan cookie sebelumnya, jadi saya gak perlu ngirim lagi”. Jika cookie sudah habis masa berlakunya, maka server akan mengirim lagi cookie dengan menggunakan header Set-Cookie ke browser dan disimpan. Begitu seterusnya.
Cookie ini hanya akan dikirim Kembali ke server jika nama domain/pathnya valid, tidak habis masa berlakunya dan sesuai dengan flags.
Atribut Domain pada cookie
Ketika cookie memiliki atribut domain contohnya “domain=cyberarmy.id” atau “domain=.cyberarmy.id”, maka browser akan mengirimkan cookie pada website cyberarmy.id dan semua subdomainnya.
Jika server tidak mengatur atribut domain ini, browser secara otomatis akan mengatur domain dengan nama website yang dikunjungi dan akan menggunakan flag host-only. Artinya cookie hanya akan dikirim pada domain yang benar-benar valid.
Atribut Path
Pada penjelasan sebelumnya, sudah dijelaskan bahwa domain dan path menentukan pengiriman cookie. Jika domain dan path berbeda dengan data yang disimpan di browser maka cookie tidak akan dikirim ke server.
Untuk atribut path. Ketika pada cookie di-set seperti berikut.
Path=/user/info |
Maka browser akan mengirimkan cookie pada domain yang telah ditentukan dan semua resource yang terdapat pada path /user/info.
/user/info /user/info/add /user/info/edit/1 /user/info/delete/1 |
Namun ketika browser mengunjungi path /infouser. Maka cookie tidak akan dikirim karena server tidak pernah menginstall cookie dengan path /infouser.
Atribut Expires
Attribute Expire akan menentukan masa berlaku cookie yang tersimpan pada browser. Browser tidak akan mengirimkan cookie ke server jika masa berlakunya habis. Cookie juga akan habis masa berlakunya seiring dengan habisnya masa session. Session akan kita pelajari selanjutnya.
3.3.2 Atribut Flags http-only dan Secure
Ketika server menginstall cookie pada browser dengan menggunakan atribut Http-only. Atribut ini akan mencegah JavaScript,Flash, java dan teknologi non-HTMl lainnya dari membaca cookie. Proses membaca cookie via Javascript ini biasa digunakan pada celah kemanan Cross Site Scripting (XSS). Jadi flag http-only ini merupakan salah satu cara untuk mengamankan website dari serangan XSS. XSS akan pelajari selanjutnya lebih detail di kursus ini.
Sedangkan Flags Secure berfungsi agar cookies yang dikirimkan browser ke server hanya boleh dikirimkan melalui protokol HTTPS. Jika menggunakan HTTP, cookie tidak akan dikirim.
3.3.3 Konten Cookie
Sebuah cookie bisa berisi beberapa data. Server bisa mengisi beberapa sekaligus pada cookie. Contohnya sebagai berikut.
Set-Cookie : Username=andi;member=admin; |
Komentar
Posting Komentar
Silahkan sertakan nama bagi yang ingin berkomentar, Terima kasih..