Kamis, 04 April 2013

Cookie tidak berbahaya

Apa sih cookie itu?
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.)

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