Rumah > hujung hadapan web > tutorial js > Pembolehubah Sesi Kekurangan Kuki dalam JavaScript

Pembolehubah Sesi Kekurangan Kuki dalam JavaScript

Lisa Kudrow
Lepaskan: 2025-03-09 00:50:10
asal
360 orang telah melayarinya

Pembolehubah Sesi Kekurangan Kuki dalam JavaScript Pembolehubah Sesi Kekurangan Kuki dalam JavaScript Kuki mungkin lazat, tetapi mereka boleh meninggalkan rasa jahat jika anda tidak memasak dengan betul! Kuki boleh disekat oleh pengguna, ruang penyimpanan terhad kepada empat kuki 20kb setiap domain, hanya rentetan yang boleh digunakan, laluan boleh menyebabkan kekeliruan, dan data biasanya diluluskan sebagai teks biasa dalam header HTTP. Sering kali, kuki boleh menjadi terlalu banyak untuk aplikasi klien yang perlu menyimpan data keadaan sementara. Nasib baik, terdapat penyelesaian yang membolehkan anda menyimpan data JavaScript dalam penyemak imbas. Data ini dikekalkan di antara beban halaman, ia akan bertahan di belakang/peristiwa seterusnya (walaupun jauh dari domain), ia tidak memerlukan plugin atau kemudahan penyimpanan luar talian, ia akan memegang beberapa maklumat megabait, ia tidak pernah dihantar ke pelayan, dan berfungsi dalam setiap pelayar. Bizarrely, ia berfungsi dengan mengeksploitasi harta window.name (atau window.top.name jika anda menggunakan pelbagai bingkai). Ia jarang berlaku untuk pemaju menetapkan harta Window.Name. Umumnya, ia hanya diperlukan apabila anda memanipulasi bingkai atau tingkap pop timbul. Walaupun saya berharap anda tidak melakukan itu, anda biasanya tidak perlu menentukan nama untuk tetingkap permulaan aplikasi. Walaupun harta nama masih rentetan, ia boleh memegang beberapa megabait data. Sesetengah versi opera mengehadkannya kepada sekitar 2MB tetapi kebanyakan pelayar menawarkan 10MB atau lebih. Ia mudah untuk mencuba sendiri. Masukkan kod JavaScript berikut ke dalam halaman di laman web anda:

window.name = "This message will survive between page loads.";
Salin selepas log masuk
Sekarang tambahkan kod berikut ke halaman lain:
alert(window.name);
Salin selepas log masuk
Navigasi dari halaman pertama ke yang kedua dan anda akan mendapati bahawa data mesej dikekalkan. Seperti biasa, terdapat beberapa kaveat:
  1. Hartanah Window.Name boleh dianalisis dan diubah jika anda menavigasi ke halaman di laman web lain. Itu mudah digagalkan dengan tidak menyediakan pautan luaran dalam tetingkap utama aplikasi anda. Walau bagaimanapun, untuk berada di sisi yang selamat, jangan gunakan Window.Name untuk menyimpan data yang selamat (tidak mungkin menjadi masalah utama bagi kedai data sementara yang hanya pelanggan).
  2. window.name hanya boleh menyimpan rentetan. Bagaimana jika kita perlu menyimpan jenis data lain atau objek yang kompleks? Serialization adalah jawapan dan, mujurlah, kami telah membangunkan kod penyemak imbas untuk menghasilkan rentetan JSON dari mana-mana objek JavaScript.
Lihat juga: Cara Menulis Perpustakaan Sesi Kurang Kuki untuk JavaScript.

Soalan Lazim (Soalan Lazim) Mengenai Pembolehubah Sesi JavaScript Cookieless

Apakah faedah menggunakan sesi cookieless dalam JavaScript? Pertama, mereka dapat meningkatkan pengalaman pengguna dengan mengekalkan maklumat negeri di beberapa halaman tanpa memerlukan kuki. Ini amat berguna untuk pengguna yang telah melumpuhkan kuki dalam tetapan penyemak imbas mereka. Kedua, sesi cookieless dapat meningkatkan keselamatan aplikasi web anda dengan mengurangkan risiko merampas sesi melalui kecurian cookie. Akhir sekali, mereka juga dapat membantu memastikan pematuhan peraturan privasi yang menyekat penggunaan kuki. ID sesi ini boleh diluluskan di antara klien dan pelayan melalui URL atau medan borang tersembunyi. Di sisi pelayan, anda boleh menggunakan perpustakaan atau rangka kerja pengurusan sesi untuk mengendalikan penciptaan, penyimpanan, dan pengambilan data sesi. Walau bagaimanapun, penting untuk diperhatikan bahawa data yang disimpan dalam sessionStorage hanya tersedia untuk tempoh sesi halaman dan dipadam apabila tab ditutup. Juga, sessionStorage tidak menyediakan sebarang mekanisme terbina dalam untuk mengaitkan data sesi dengan ID sesi yang unik. Untuk mengurangkan risiko ini, penting untuk menggunakan protokol komunikasi yang selamat seperti HTTPS dan untuk melaksanakan langkah -langkah untuk mencegah serangan penetapan sesi, seperti regenerasi ID sesi selepas log masuk. Alat seperti OWASP ZAP dan Burp Suite boleh digunakan untuk melakukan ujian ini. Ia juga penting untuk mengkaji semula kod pengurusan sesi aplikasi anda untuk memastikan ia mengikuti amalan terbaik untuk pengurusan sesi yang selamat. Ini dilakukan dengan menetapkan atribut cookieless dari elemen konfigurasi SesiState untuk benar dalam fail web.config. Modul Negeri Sesi ASP.NET kemudian secara automatik mengendalikan penciptaan, penyimpanan, dan pengambilan data sesi.

Bolehkah saya mengakses pembolehubah sesi dalam javascript?

Ya, anda boleh mengakses pembolehubah sesi dalam JavaScript menggunakan objek SesiStorage. Walau bagaimanapun, ini hanya berfungsi untuk data yang disimpan di sisi klien. Untuk mengakses data sesi pelayan di JavaScript, anda perlu menggunakan Ajax atau teknik yang sama untuk membuat permintaan ke pelayan. Di sisi pelayan, anda boleh menggunakan sesi yang disokong pangkalan data atau kedai sesi yang diedarkan seperti redis atau memcached. Sesi Cookieless boleh memberikan pengalaman pengguna yang lebih baik untuk pengguna yang telah melumpuhkan kuki dan dapat meningkatkan keselamatan dengan mengurangkan risiko merampas sesi. Walau bagaimanapun, mereka berpotensi mendedahkan ID sesi dalam URL. Sesi berasaskan kuki, sebaliknya, lebih mudah dilaksanakan dan tidak mendedahkan ID sesi, tetapi mereka boleh terdedah kepada kecurian cookie dan dipengaruhi oleh tetapan cookie pengguna. Walau bagaimanapun, rangka kerja ini tidak memberikan sokongan terbina dalam sesi cookieless, jadi anda perlu melaksanakannya sendiri atau menggunakan perpustakaan pihak ketiga.

Atas ialah kandungan terperinci Pembolehubah Sesi Kekurangan Kuki dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan