Perbedaan antara cookie dan sesi?

154

Saya pelatihan dalam pengembangan web dan saya belajar tentang JSP & Servlets . Saya memiliki pengetahuan tentang HttpSession- Saya telah menggunakannya di beberapa proyek sampel saya.

Di browser saya telah melihat opsi untuk "menghapus cookie". Jika saya menghapus cookie itu menghapus HttpSessionjuga.

Apakah cookie dan sesi sama? Apa perbedaan di antara mereka?

harimau hitam
sumber
Lihat juga pertanyaan ini: < stackoverflow.com/questions/356562/… > Secara khusus, komentar tentang cookie yang ditandatangani.
Joel Coehoorn
Saya pikir jawaban kedua untuk pertanyaan ini lebih tepat, Jika Anda memilih itu sebagai jawaban terbaik, banyak orang akan membacanya.
Suraj Jain

Jawaban:

180

Sesi adalah file sisi server yang berisi informasi pengguna, sedangkan Cookie adalah file sisi klien yang berisi informasi pengguna. Sesi memiliki pengidentifikasi unik yang memetakannya untuk pengguna tertentu. Pengidentifikasi ini dapat diteruskan dalam URL atau disimpan ke dalam cookie sesi.

Sebagian besar situs modern menggunakan pendekatan kedua, menyimpan pengidentifikasi dalam Cookie alih-alih meneruskannya dalam URL (yang menimbulkan risiko keamanan). Anda mungkin menggunakan pendekatan ini tanpa menyadarinya, dan dengan menghapus cookie Anda secara efektif menghapus sesi yang cocok saat Anda menghapus pengidentifikasi sesi unik yang terkandung dalam cookie.

Eran Galperin
sumber
10
" Melewatinya dalam URL (yang menimbulkan risiko keamanan). " sebenarnya kedua pendekatan memiliki risiko keamanan (berbeda). ID-rahasia dalam URL dapat dibuat aman jika dilakukan dengan benar, dan jika pengguna memahami bahwa URL itu rahasia dan tidak dapat diposting di forum publik.
curiousguy
1
"Identifier dapat dikirimkan dalam URL atau disimpan ke dalam cookie sesi." . Dimana? sisi klien atau server? terima kasih telah menjelaskan lebih lanjut.
Adib Aroui
4
@whitelettersandblankspaces Cookie sesi disimpan pada klien (dan nilainya berisi pengidentifikasi sesi unik yang dikirim dengan setiap permintaan untuk memetakan sesi browser ke sesi pengguna di server).
WynandB
306

Cookie hanyalah string teks pendek yang dikirim bolak-balik antara klien dan server. Anda bisa menyimpan name=bob; password=asdfasdalam cookie dan mengirimnya bolak-balik untuk mengidentifikasi klien di sisi server. Anda dapat menganggap ini sebagai melakukan pertukaran dengan teller bank yang tidak memiliki ingatan jangka pendek, dan meminta Anda untuk mengidentifikasi diri Anda untuk setiap transaksi. Tentu saja menggunakan cookie untuk menyimpan informasi semacam ini sangat tidak aman. Cookie juga terbatas ukurannya.

Sekarang, ketika teller bank tahu tentang masalah ingatannya, dia dapat menuliskan informasi Anda di selembar kertas dan memberi Anda nomor id pendek. Kemudian, alih-alih memberikan nomor akun dan SIM Anda untuk setiap transaksi, Anda bisa mengatakan "Saya klien 12"

Menerjemahkannya ke Server Web: Server akan menyimpan informasi terkait dalam objek sesi, dan membuat ID sesi yang akan dikirim kembali ke klien dalam cookie. Ketika klien mengirimkan kembali cookie, server dapat dengan mudah mencari objek sesi menggunakan ID. Jadi, jika Anda menghapus cookie, sesi tersebut akan hilang.

Satu alternatif lain adalah agar server menggunakan penulisan ulang URL untuk bertukar id sesi.

Misalkan Anda memiliki tautan - www.myserver.com/myApp.jsp Anda dapat menelusuri halaman dan menulis ulang setiap URL sebagai www.myserver.com/myApp.jsp?sessionID=asdfatau bahkan www.myserver.com/asdf/myApp.jspdan bertukar pengenal dengan cara itu. Teknik ini ditangani oleh wadah aplikasi web dan biasanya dinyalakan dengan mengatur konfigurasi untuk menggunakan sesi tanpa masak.

Chris Cudmore
sumber
29
Ini adalah penjelasan yang luar biasa yang tertanam dalam analogi dunia nyata yang hebat. Jawaban ini harus lebih ditingkatkan. Sangat mudah diakses oleh pemula yang cenderung mengajukan pertanyaan seperti itu.
user798719
2
Apa yang terjadi jika saya pengguna dan orang lain mengetahui ID sesi saya?
Maria Ines Parnisari
3
@ I19 Mungkin, mereka bisa meniru Anda. Ini telah terjadi dalam skenario perjudian online - Mengendus wifi hotel, mencuri ID sesi, dan mengakses akun. Mengamankan satu sesi adalah cerita lain sekaligus.
Chris Cudmore
2
Jadi siapa yang membuat cookie terlebih dahulu? Server atau klien? Atau apakah ini tergantung aplikasi? (Saya akan mengatakan server karena kalau tidak menimbulkan ancaman keamanan, tapi saya pikir itu layak disebut?)
nha
4
@nha Server membuat sesi dan meneruskannya dalam respons dengan cookie. Sesi dibuat tergantung pada logika aplikasi saat Anda ingin dibuat. Klien juga dapat membuat cookie tetapi mungkin tidak banyak berguna dalam skenario mengidentifikasi sesi karena server mungkin tidak tahu nilai yang diwakilkan dalam sesi.
Azeem
4

Cookie dan sesi keduanya menyimpan informasi tentang pengguna (untuk membuat permintaan HTTP stateful) tetapi perbedaannya adalah cookie menyimpan informasi di sisi klien (browser) dan sesi menyimpan informasi di sisi server. Cookie terbatas dalam arti bahwa cookie menyimpan informasi tentang pengguna terbatas dan hanya menyimpan konten terbatas untuk setiap pengguna. Sesi tidak dibatasi sedemikian rupa.

sanjay singh
sumber
1

Cookie pada dasarnya adalah array global yang diakses di seluruh browser web. Banyak kali digunakan untuk mengirim / menerima nilai. ini bertindak sebagai mekanisme penyimpanan untuk mengakses nilai antar formulir. Cookie dapat dinonaktifkan oleh browser yang menambah kendala untuk penggunaannya dibandingkan dengan sesi.

Sesi dapat didefinisikan sebagai sesuatu antara masuk dan keluar. waktu antara pengguna masuk dan keluar adalah sesi. Sesi menyimpan nilai hanya untuk waktu sesi yaitu sebelum keluar. Sesi digunakan untuk melacak aktivitas pengguna, setelah ia masuk.

RishikeshD
sumber
0

Google JSESSIONID . Ini akan menjelaskan bagaimana Servlet API pada awalnya menggunakan penulisan ulang URL dan kemudian, jika cookie diaktifkan, cookie untuk mengelola sesi.

HTTP tidak memiliki kewarganegaraan sehingga browser klien harus mengirim id sesi ke server dengan setiap permintaan. Server, melalui cara apa pun, menggunakan id ini untuk mengambil data apa pun untuk sesi itu sehingga tersedia untuk seumur hidup permintaan.

Nick Holt
sumber
0

Sesi di Asp.net:

1. Mempertahankan data di seluruh aplikasi.

2.Mendaftar data jika sesi saat ini hidup. Jika kita memerlukan beberapa data untuk dapat diakses dari beberapa pengontrol dan tampilan, sesi adalah cara untuk menyimpan dan mengambil data.

3.Sesi adalah file sisi server yang berisi informasi pengguna. [Sesi adalah pengidentifikasi unik yang memetakannya untuk pengguna tertentu]

Menerjemahkannya ke Server Web: Server akan menyimpan informasi terkait dalam objek sesi, dan membuat ID sesi yang akan dikirim kembali ke klien dalam cookie. Ketika klien mengirimkan kembali cookie, server dapat dengan mudah mencari objek sesi menggunakan ID. Jadi, jika Anda menghapus cookie, sesi tersebut akan hilang.

Vicky
sumber
0

Cookie adalah cara untuk mengimplementasikan sesi antara klien dan server, dengan cara ini informasi sesi disimpan dalam cookie. Tapi ini bukan satu-satunya cara untuk menyimpan info sesi, cara lain adalah menyimpan info sesi di Url.

kurang melelahkan
sumber
0

Cookie disimpan dalam browser sebagai format file teks. Ini disimpan dalam jumlah terbatas data. Cookie hanya memungkinkan 4kb [4096bytes] . $ _ Variabel COOKIE tidak akan menampung banyak cookie dengan nama yang sama

kita dapat mengakses nilai cookie dengan mudah. ​​Jadi itu kurang aman . Fungsi setcookie () harus muncul sebelum

<html> 

menandai.

Sesi disimpan di sisi server. Ini disimpan jumlah data yang tidak terbatas. Itu memegang beberapa variabel dalam sesi. kami tidak dapat mengakses nilai cookie dengan mudah. ​​Jadi ini lebih aman .

Tautan: perbedaan-antara-cookie-dan-sesi

Elangovan
sumber
Sebenarnya, Anda dapat menyimpan banyak data di cookie. Juga, sesi tidak bisa menampung data dalam jumlah tak terbatas. Anda sangat dibatasi oleh jumlah RAM yang Anda miliki.
Koray Tugay