Mengapa situs web populer menyimpan data terkait sesi yang sangat rumit dalam cookie - dan apa artinya semua itu?

19

Sebagai pengembang web, kita semua belajar bahwa sesi membantu mengatasi masalah yang terkait dengan sifat HTTP yang tanpa kewarganegaraan. Kami membuat id sesi unik , dan mengirimkannya ke browser - dan ketika browser mengirim id yang sama kepada kami, kami mengidentifikasi pengguna dengan mudah.

Semua ini terdengar sangat mudah, dan TIDAK begitu rumit untuk diterapkan dalam bahasa apa pun.

SEKARANG

Lihatlah tangkapan layar berikut yang saya ambil. Ini menunjukkan jenis cookie yang disimpan oleh situs web populer. Sepertinya mereka menyimpan banyak ID sesi, atau mereka mencoba menyembunyikan id aktual dengan menetapkan begitu banyak cookie, atau, itu adalah tindakan keamanan khusus yang mereka ambil untuk mencegah pembajakan sesi dan masalah terkait lainnya. Atau terserah.

Gmail (sebelum masuk)

masukkan deskripsi gambar di sini

Gmail (setelah login)

masukkan deskripsi gambar di sini

Facebook

masukkan deskripsi gambar di sini

StackExchange

masukkan deskripsi gambar di sini

(Jangan khawatir, Anda tidak bisa mencuri sesi saya - itu basi dan tidak lengkap :))

Jadi, pertanyaan saya adalah - apa tujuan dari kerumitan ini? Tolong jelaskan apa arti cookie yang berbeda ini (secara umum), dan untuk tujuan apa cookie ini ditetapkan. Terakhir, petunjuk tentang bagaimana saya bisa melakukannya (dan apakah saya harus) di aplikasi saya sendiri.

Satu pertanyaan lagi: Dalam banyak kasus, nilai-nilai di cookie terlihat seperti dikodekan URL - mengapa demikian?

treecoder
sumber

Jawaban:

21
  1. Terkadang tidak praktis untuk menyimpan data tertentu dalam tabel sesi pada database. Jika data tertentu banyak diperbarui, maka itu bisa menghambat banyak basis data juga. Jika itu masalahnya dan datanya tidak terlalu penting, mungkin lebih baik disimpan dalam cookie terpisah.

  2. Ketika (1) terjadi, Anda harus berurusan dengan batas 4kb per cookie, jadi menyimpan semua data sesi dalam cookie dalam satu cookie adalah ide yang buruk.

  3. Akan lebih baik untuk dapat menyimpan semuanya dalam jumlah minimum cookie yang diperlukan, tetapi masalah kompleksitas proyek mempersulit ini. Beberapa aplikasi dikembangkan oleh beberapa tim . Terkadang apa yang Anda lihat sebagai satu server web sebenarnya adalah proksi yang berbicara dengan beberapa kelompok server web, merutekan bagian-bagian berbeda dari situs ke kelompok yang berbeda, masing-masing dengan kumpulan cookie mereka sendiri .

  4. Kue itu murah. Anda adalah pengecualian dari aturan - tidak ada yang melihat di toko kue mereka untuk melihat berapa banyak kue yang mereka miliki. Dan ada sedikit manfaat kinerja untuk mencoba menggabungkan semua data sesi sisi klien menjadi cookie sesedikit mungkin.

Michael Slade
sumber
Saya juga pengecualian untuk aturan itu.
Michael Slade