Saya mulai menggunakan PHP beberapa bulan yang lalu. Demi membuat sistem login untuk situs web saya, saya membaca tentang cookie dan sesi dan perbedaannya (cookie disimpan di browser pengguna dan sesi di server). Pada saat itu, saya lebih suka cookie (dan siapa yang tidak suka cookie ?!) dan hanya berkata: "siapa yang peduli? Saya tidak punya kesepakatan baik untuk menyimpannya di server saya", jadi, saya pergi ke depan dan menggunakan cookie untuk proyek kelulusan sarjana saya. Namun, setelah melakukan sebagian besar aplikasi saya, saya mendengar bahwa untuk kasus penyimpanan ID pengguna, sesi lebih tepat. Jadi saya mulai berpikir tentang apa yang akan saya katakan jika juri bertanya kepada saya mengapa Anda menggunakan cookie daripada sesi? Saya hanya punya alasan itu (bahwa saya tidak perlu menyimpan informasi internal tentang pengguna).? atau lebih dari itu?
Bisakah Anda memberi tahu saya tentang keuntungan / kerugian menggunakan cookie untuk menyimpan ID Pengguna?
Terima kasih untuk Anda semua di StackOverflow!
Jawaban:
Konsep ini menyimpan data persisten di seluruh pemuatan halaman untuk pengunjung web. Cookie menyimpannya langsung di klien. Sesi menggunakan cookie sebagai kunci pengurutan, untuk dikaitkan dengan data yang disimpan di sisi server.
Lebih disukai menggunakan sesi karena nilai aktual disembunyikan dari klien, dan Anda mengontrol kapan data kedaluwarsa dan menjadi tidak valid. Jika semuanya didasarkan pada cookie, pengguna (atau peretas) dapat memanipulasi data cookie mereka dan kemudian memainkan permintaan ke situs Anda.
Sunting: Saya rasa tidak ada keuntungan menggunakan cookie, selain dari kesederhanaan. Lihatlah dengan cara ini ... Apakah pengguna memiliki alasan untuk mengetahui ID # mereka? Biasanya saya akan mengatakan tidak, pengguna tidak memerlukan informasi ini. Memberikan informasi harus dibatasi berdasarkan kebutuhan untuk mengetahui. Bagaimana jika pengguna mengubah cookie-nya untuk memiliki ID yang berbeda, bagaimana tanggapan aplikasi Anda? Ini risiko keamanan.
Sebelum sesi adalah semua kemarahan, saya pada dasarnya memiliki implementasi sendiri. Saya menyimpan nilai cookie unik pada klien, dan menyimpan data persisten saya di database bersama dengan nilai cookie itu. Kemudian pada permintaan halaman saya mencocokkan nilai-nilai itu dan memiliki data persisten saya tanpa membiarkan klien mengontrol apa itu.
sumber
session_write_close();
saat Anda membutuhkannya. Memutar ID unik Anda sendiri dan mencocokkannya dengan cookie biasa tidak begitu sulit, dan membuat semua halamannya bagus dan cepat.Ide dasar untuk membedakan keduanya.
Sidang:
Kue:
Sesi lebih disukai ketika Anda perlu menyimpan informasi / nilai jangka pendek, seperti variabel untuk menghitung, mengukur, menanyakan, dll.
Cookie lebih disukai ketika Anda perlu menyimpan informasi / nilai jangka panjang, seperti akun pengguna (sehingga bahkan ketika mereka mematikan komputer selama 2 hari, akun mereka akan tetap masuk). Saya tidak bisa memikirkan banyak contoh untuk cookie karena tidak diadopsi di sebagian besar situasi.
sumber
Ini adalah perbedaan utama dalam pilihan Anda,
Jika Anda ingin id diingat untuk waktu yang lama, maka Anda perlu menggunakan cookie; jika tidak, jika Anda hanya ingin situs web mengenali pengguna untuk kunjungan ini saja maka sesi adalah cara untuk pergi.
Sesi disimpan dalam file yang akan dihasilkan oleh server php Anda. Untuk mengingat file mana untuk pengguna yang mana, php juga akan menetapkan cookie pada browser pengguna yang menyimpan id file sesi ini sehingga dalam kunjungan berikutnya php akan membaca file ini dan memuat ulang sesi tersebut.
Sekarang php secara default menghapus sesi setiap interval, dan juga penamaan konvensi sesi membuatnya otomatis kedaluwarsa. Selain itu, browser tidak akan menyimpan cookie yang menyimpan id sesi setelah browser ditutup atau riwayat dihapus.
Penting untuk dicatat bahwa saat ini browser juga mendukung jenis mesin penyimpanan lain seperti LocalStorage, SessionStorage, dan mesin webdb lain yang dapat digunakan kode javascript untuk menyimpan data ke komputer Anda agar dapat mengingat Anda. Jika Anda membuka konsol javascript di dalam Facebook, misalnya, dan ketik "localStorage" Anda akan melihat semua variabel yang digunakan Facebook untuk mengingat Anda tanpa cookie.
sumber
saat Anda menyimpan #ID sebagai cookie untuk mengenali pengguna yang masuk, Anda sebenarnya menunjukkan data kepada pengguna yang tidak terkait dengan mereka. Selain itu, jika pihak ketiga mencoba menetapkan ID acak sebagai data cookie di browser mereka, mereka akan dapat meyakinkan server bahwa mereka adalah pengguna sementara sebenarnya tidak. Itu kurangnya keamanan.
Anda telah menggunakan cookie, dan seperti yang Anda katakan Anda telah menyelesaikan sebagian besar proyek. Selain itu cookie memiliki hak istimewa untuk tetap untuk waktu yang lama, sementara sesi berakhir lebih cepat. Jadi sesi tidak cocok dalam kasus ini. Pada kenyataannya, banyak situs web dan layanan yang terkenal dan populer menggunakan cookie dan Anda dapat tetap masuk untuk waktu yang lama. Tetapi bagaimana Anda bisa menggunakan metode mereka untuk membuat proses login yang lebih aman?
inilah idenya: Anda dapat membantu cara Anda menggunakan cookie: Jika Anda menggunakan kunci acak alih-alih ID untuk mengenali pengguna yang masuk, pertama, Anda tidak membocorkan data primer Anda ke pengguna acak, dan kedua, Jika Anda mempertimbangkan Acak cukup besar, akan lebih sulit bagi siapa pun untuk menebak kunci atau membuat kunci acak. misalnya Anda dapat menyimpan kunci sepanjang 40 seperti ini di peramban Pengguna: "KUYTYRFU7987gJHFJ543JHBJHCF5645UYTUYJH54657jguthfn" dan kecil kemungkinan bagi siapa pun untuk membuat kunci yang tepat dan berpura-pura menjadi orang lain.
sumber
Jawaban singkat
Aturan dipesan berdasarkan prioritas:
Sumber: https://www.lucidar.me/en/web-dev/sessions-or-cookies/
Jawaban terinci
Kue
Sesi
Pilihan yang tepat
Sesi menggunakan cookie! Data sesi disimpan di sisi server, tetapi UID disimpan di sisi klien dalam cookie. Hal ini memungkinkan server untuk mencocokkan pengguna yang diberikan dengan data sesi yang tepat. UID dilindungi dan sulit diretas, tetapi tidak kebal. Untuk tindakan sensitif (mengubah email atau mengatur ulang kata sandi), jangan mengandalkan sesi maupun cookie: minta kata sandi pengguna untuk mengonfirmasi tindakan.
Data sensitif tidak boleh disimpan dalam cookie (email, kata sandi terenkripsi, data pribadi ...). Ingatlah bahwa data disimpan di komputer asing, dan jika komputer itu tidak pribadi (ruang kelas atau komputer publik) orang lain berpotensi membaca konten cookie.
Data Remember-me harus disimpan dalam cookie, jika tidak, data akan hilang ketika pengguna menutup browser. Namun, jangan menyimpan kata sandi atau data pribadi pengguna dalam cookie 'ingat-saya'. Simpan data pengguna dalam basis data dan tautkan data ini dengan sepasang kunci / ID terenkripsi yang disimpan dalam cookie.
Setelah mempertimbangkan rekomendasi sebelumnya, pertanyaan berikut adalah yang akhirnya membantu Anda memilih antara cookie dan sesi:
Haruskah data yang tetap ada saat pengguna menutup browser?
sumber
Sebenarnya, sesi dan cookie tidak selalu merupakan hal yang terpisah. Seringkali, tetapi tidak selalu, sesi menggunakan cookie.
Ada beberapa jawaban yang bagus untuk pertanyaan Anda dalam pertanyaan-pertanyaan lain di sini. Karena pertanyaan Anda secara khusus tentang menyimpan IDU pengguna (atau ID) pengguna, saya pikir itu bukan duplikat dari pertanyaan-pertanyaan lain, tetapi jawaban mereka akan membantu Anda.
cookie vs sesi
Cache VS Session VS cookies?
Apa perbedaan antara Sesi dan Cookie?
sumber
Saya pribadi menggunakan cookie dan sesi.
Cookie hanya digunakan ketika pengguna mengklik kotak centang "ingat saya" . dan juga cookie dienkripsi dan data hanya didekripsi di server. Jika ada yang mencoba mengedit cookie, decrypter kami dapat mendeteksi dan menolak permintaan tersebut.
Saya telah melihat banyak situs di mana info login disimpan dalam cookie , siapa pun bisa dengan mudah mengubah id dan nama pengguna pengguna dalam cookie untuk mengakses akun siapa pun.
Terima kasih,
sumber
Sesi dan Cookie tidak sama.
Sesi digunakan untuk menyimpan informasi dari halaman web. Biasanya halaman web tidak memiliki ingatan untuk menyimpan informasi ini. Tetapi menggunakan kami dapat menyimpan informasi yang diperlukan.
Tetapi Cookie digunakan untuk mengidentifikasi pengguna. Menggunakan cookie, kita dapat menyimpan data. Ini adalah bagian kecil dari data yang akan disimpan di browser web pengguna. Jadi, setiap kali pengguna menelusuri browser lain kali mengirim kembali informasi data cookie ke server untuk mendapatkan kegiatan sebelumnya.
Kredit: Sesi dan Cookie
sumber
Sesi memungkinkan Anda menyimpan setiap informasi seperti halnya cookie, tetapi data disimpan di server alih-alih klien.
sumber
Seperti yang dikatakan orang lain, Sesi itu pintar dan lebih menguntungkan menyembunyikan informasi dari klien.
Tetapi Cookie masih memiliki setidaknya satu keuntungan , Anda dapat mengakses Cookie Anda dari Javascript (Misalnya ngCookies ). Dengan sesi PHP Anda tidak dapat mengaksesnya di mana pun di luar skrip PHP.
sumber
Saya akan memilih Sesi, pertama-tama sesi lebih aman daripada cookie, cookie adalah data situs klien dan sesi adalah data situs server. Cookie digunakan untuk mengidentifikasi pengguna, karena itu adalah potongan-potongan kecil kode yang tertanam di server saya dengan browser komputer pengguna. Di sisi lain, Sesi membantu Anda untuk mengamankan identitas Anda karena server web tidak tahu siapa Anda karena alamat HTTP mengubah status 192.168.0.1 menjadi 765487cf34ert8ded ..... ..atau nomor lain dengan bantuan metode GET dan POST. Sesi menyimpan data pengguna dalam sesi ID unik yang bahkan ID pengguna tidak dapat saling cocok. Sesi menyimpan informasi pengguna tunggal di semua halaman dalam satu aplikasi. Cookie kedaluwarsa diatur dengan bantuan setcookies () sedangkan sesi kedaluwarsa tidak disetel itu berakhir ketika pengguna mematikan browser.
sumber
Sesi adalah sekelompok informasi di server yang terkait dengan informasi cookie. Jika Anda menggunakan PHP, Anda dapat memeriksa sesi. simpan _ lokasi jalur dan sebenarnya "lihat sesi". Cookie adalah cuplikan data yang dikirim ke dan dikembalikan dari klien. Cookie sering digunakan untuk memfasilitasi sesi karena memberitahu server mana klien menangani sesi yang mana. Ada cara lain untuk melakukan ini (sihir string kueri dll) tetapi cookie kemungkinan paling umum untuk ini.
sumber