Apa sih cookie itu?
Non Teknis
Non Teknis
Saya tidak bisa menemukan contoh bagus di dunia nyata yang bisa
menjelaskan cookie dengan tepat. Tapi mari kita coba yang ini: Seorang
dokter akan memberikan pada Anda sebuah kartu yang akan diisi mengenai
keadaan Anda ketika pertama kali Anda datang berobat kepadanya dan
menyerahkan kartu itu ke Anda. Setiap kali Anda datang (yang mungkin
masih berhubungan dengan penyakit yang sama) Anda menyerahkan kartu itu
dan dokter itu bisa mengetahui perkembangan Anda, dan bisa mengetahui
Anda datang karena apa (untuk penyakit yang lalu, atau karena penyakit
baru). Jika dokter itu adalah web server dan pasien adalah klien (browser) maka kartu tersebut adalah cookie yang akan kita bahas saat ini.
Sebagian besar dokter (yang pasiennya tidak terlalu banyak) akan
ingat dengan masing-masing pasiennya dan juga penyakitnya, tapi
webserver tidak ingat sama sekali mengenai sebuah klien, kira-kira sama
dengan dokter yang punya banyak sekali pasien sampai tidak ingat bahwa
pasien ini sedang berobat untuk kedua kalinya sehubungan dengan
penyakitnya yang kemarin. Sifat webserver (HTTP server) yang tidak
mempedulikan (mengingat-ingat) permintaan ini disebut stateless.
Seorang pasien bisa datang ke dokter untuk beberapa kali untuk
keperluan yang sama (penyakit yang sama). Demikian juga seseorang bisa
mendatangi beberapa halaman web untuk satu keperluan, misalnya untuk
membeli meja belajar (dengan jaminan naik kelas atau uang akan kembali)
secara online, dia akan memasuki halaman login, lalu pindah ke halaman
pemilihan barang dan memilih meja belajar, pindah ke halaman untuk
mengisi metode pembayaran, dan pindah ke halaman lain untuk logout.
Karena HTTP server tidak mengingat-ingat kliennya maka harus dicarikan
suatu cara agar dia dapat mengingatnya, salah satunya adalah dengan
cookie. Cookie ini seperti kartu yang diberikan dokter kepada pasiennya
yang harus diberikan setiap kali berobat, jadi cookie dikirim oleh
webserver, diterima client (browser) lalu setiap kali mengunjungi
halaman lain cookie ini diserahkan ke webserver, dengan melihat isi
cookie maka bisa diketahui informasi misalnya :”oh ini client yang tadi
sudah login dengan nama login Sakura”, atau “nama login: sakura; barang
yang dipilih: boneka beruang dan sebuah pin”. Cookie bukanlah
satu-satunya cara untuk menciptakan suatu sesi pada HTTP. Seperti juga
kartu bukanlah satu-satunya cara Pak dokter bisa mengingat/mengetahui
kondisi pasiennya (kan bisa saja Pak dokter minta tolong asistennya yang
cantik untuk mengingat/mencatat semua pasiennya).
Teknis
Sebelum dapat memahami cookie Anda harus tahu tentang HTTP. HTTP merupakan suatu protokol stateless yang digunakan untuk world wide web (WWW).
Istilah World wide web tentunya Anda sudah tahu. Ada dua istilah yang
perlu dijelaskan: protokol dan stateless. Secara singkat dapat dikatakan
Protokol merupakan suatu kesepakatan mengenai bagaimana komunikasi akan
dilakukan [Tanenbaum, 1992]. Sedangkan stateless artinya protokol ini
tidak mempertahankan informasi antara satu permintaan dengan pemintaan
lainnya. Server HTTP akan melayani suatu permintaan tanpa tergantung
permintaan sebelumnya atau permintaan sesudahnya. Spesifikasi HTTP/1.0
bisa dilihat di RFC 1945 dan HTTP/1.1 bisa dilihat di RFC 2068.
Dengan sifatnya yang stateless, akan sangat sulit untuk membuat suatu
aplikasi dengan protokol HTTP yang perlu menangani sebuah sesi
(misalnya belanja online).
Dalam konteks ini suatu sesi adalah serangkaian permintaan yang berupa
suatu kesatuan, misalnya mulai dari Anda login, memilih barang,
melakukan pembayaran, sampai logout. Meskipun saat itu ada orang lain
yang sama-sama login dan sama-sama memilih barang, barang yang Anda
pilih tidak akan bercampur dengan orang itu karena Anda dan orang itu
memiliki sesi yang berbeda.
Cookie merupakan salah satu cara untuk menciptakan suatu stateful
session dengan HTTP, selain cookie masih ada cara yang lain, namun cara
ini yang dinilai paling nyaman dan menjadi standar untuk saat ini.
Secara lengkap cara kerja cookie bisa dilihat di RFC 2109.
Wujudnya cookie itu seperti apa?
Wujudnya seperti yang biasanya disuguhkan waktu Natal atau Lebaran.
Tapi itu cookie yang lain. Cookie yang ini adalah berupa informasi dalam
bentuk teks yang dipertukarkan oleh client dan server (yang membuat
cookie ini adalah server). Di dalam cookie ini ada beberapa informasi,
yaitu nama server yang memberikan, path cookie, isi cookienya dan
tanggal kadaluarsanya. Ketika menerima sebuah cookie, cookie itu akan
disimpan oleh browser didalam cookie jar (toples kue) biasanya ini
berupa file teks. Ketika browser mengunjungi suatu site yang namanya ada
di cookie jar, pathnya juga sama maka ketika meminta halaman untuk site
itu isi cookie juga dikirim.
Jika Anda masih penasaran seperti apa sih tampang sebuah cookie. Ini
saya berikan contoh cookie dari browser lynx yang saya dapat dari google:
.google.com FALSE / FALSE 2147368447 PREF ID=490beaea066057e2:TM=959406003
Setiap kali saya mengunjungi google.com cookie itu akan dikirim ke sana.
Apa yang bisa dilakukan cookie?
Cookie dipakai untuk menyimpan informasi di sisi client oleh suatu
server. Jadi yang menulis isi cookie adalah webserver, dan klien yang
menyimpannya. Untuk setiap server, besarnya suatu cookie dibatasi dan
jumlahnya juga, jadi sebuah server tidak akan bisa memberikan cookie
dalam jumlah yang banyak atau dalam ukuran yang besar untuk memenuhi
harddisk Anda.
Cookie bisa dipakai untuk menyimpan informasi login Anda untuk
digunakan pada halaman-halaman berikutnya, cookie juga bisa digunakan
untuk menyimpan informasi tambahan agar Anda tidak perlu login setiap
kali mengunjungi suatu site.
Cookie juga bisa digunakan untuk memantau halaman mana saja yang
sudah Anda kunjungi dalam suatu site. Ini yang biasanya dibesar-besarkan
oleh media, kata mereka : Anda bisa dilacak dengan cookie. RFC 2109
sendiri sudah menyinggung hal ini:
An origin server could create a Set-Cookie header to track the path
of a user through the server. Users may object to this behavior as
an intrusive accumulation of information, even if their identity is
not evident. (Identity might become evident if a user subsequently
fills out a form that contains identifying information.)
of a user through the server. Users may object to this behavior as
an intrusive accumulation of information, even if their identity is
not evident. (Identity might become evident if a user subsequently
fills out a form that contains identifying information.)
Sebenarnya yang bisa dilakukan cookie hanyalah itu, tidak jauh
berbeda dengan seorang satpam atau pramuniaga yang mengawasi Anda ketika
berbelanja disebuah toko. Dia bisa mengetahui apa saja kebiasaan Anda
setiap kali ke toko itu, tapi dia tidak akan tahu apa yang tidak Anda
ceritakan (nama Anda misalnya). Jika Anda tidak pernah mengisi data
apa-apa untuk suatu site maka cookie yang diberikan site itu hampir
tidak berpengaruh pada Anda, bagi pemilik site data seperti itu hanyalah
seperti survey (misalnya dia jadi mengetahui bahwa tidak ada yang
mengunjugi halaman tertentu dan halaman yang lain sangat disukai
pengunjung) tapi dia tidak tahu siapa yang mengisi surveynya.
Keuntungan user dengan adanya cookie
Anda pernah mengunjungi site yang memerlukan login dan ada tulisan ‘remember my login and password’?
site seperti itu meyimpan login dan password terenkrip dalam cookie.
Dengan adanya fasilitas ini Anda tidak perlu login setiap kali masuk ke
site tersebut. Bagi pengguna Internet
di rumah yang memakai saluran telepon + modem, ini berarti penghematan
pulsa karena Anda tidak perlu meload halaman awal, login dan menunggu
sampai halamannya muncul. Site-site tertentu dapat menyimpan setting
Anda sehingga memudahkan Anda memakai layanannya, salah satu yang saya
perhatikan adalah google. Google memperbolehkan usernya mengeset
beberapa hal (misalnya bahasa, jumlah hasil pencarian perhalaman dan
lain-lain) dan setting ini akan tetap ada sampai cookienya expires
(habis masa aktifnya).
Jagalah cookie Anda
Cookie memang tidak berbahaya, tapi jika cookie ini bisa di salin
orang lain, akibatnya bisa fatal. Seperti telah saya ceritakan
sebelumnya, cookie ini bisa digunakan untuk menyimpan login dan
password, jika cookie ini bisa disalin maka orang yang menyalin cookie
itu bisa login dengan login Anda, tanpa password. Namun cara ini
(menyalin cookie) tidak selalu berhasil, sebagian besar cookie punya
masa aktif, dan banyak site di internet yang akan meng-logout-kan suatu
user jika ada dua login dari 2 ip yang berbeda dari user yang sama.
Jadi hati-hati dengan cookie Anda. Di rental atau komputer yang
dipakai umum, sebaiknya Anda tidak mengaktifkan pilihan ‘remember my
login name and password’ karena sangat berbahaya. Tapi di rumah atau di
tempat pribadi lain (misalnya komputer kantor yang dipakai sendiri, atau
laptop) adanya fasilitas ini bisa membantu Anda mengurangi waktu online.
Bug
Beberapa browser yang mendukung cookie pada versi awalnya memiliki
bug. Bug yang ada memungkinkan sebuah cookie dipertukarkan dengan domain
lain (padahal seharusnya tidak boleh). Browser terbaru saat ini (IE
4/5, NS 5/6) sudah bebas dari bug ini.
Kesimpulan
Cookie tidaklah terlalu berbahaya jika dibanding teknologi lain yang ada
di internet saat ini. Javascript yang biasanya aktif disetiap browser
jauh lebih berbahaya dibanding cookie. Saat ini belum banyak bug
implementasi cookie pada browser, namun kesalahan implementasi
javascript dan vbscript sudah sangat banyak (coba lihat di
http://www.guninski.com) Jika Anda terlalu menkhawatirkan cookie
sampai-sampai Anda menginstall cookie manager yang akan menghapus cookie
Anda, mungkin sebaiknya Anda lebih mengkhawatirkan hal lain. Selain software tersebut membebani PC Anda, mungkin Anda akan mendapatkan rasa aman yang palsu (false sense of security)
karena masih banyak serangan lain selain melalui cookie. Jika Anda
tidak pernah melakukan transaksi keuangan di internet dan tidak punya
data penting di internet (di internet harddrive seperti Xdrive
misalnya), bisa dikatakan bahwa cookie tidak berbahaya .
0 komentar:
Posting Komentar