Rumah  >  Artikel  >  hujung hadapan web  >  Siasat batasan dan perangkap SessionStorage

Siasat batasan dan perangkap SessionStorage

PHPz
PHPzasal
2024-01-13 10:57:231392semak imbas

Siasat batasan dan perangkap SessionStorage

Analisis pengehadan dan kelemahan SessionStorage

SessionStorage ialah mekanisme untuk menyimpan data pada bahagian klien Ia menyediakan cara untuk menyimpan pasangan nilai kunci dalam sesi penyemak imbas yang sama. Setiap item yang disimpan dikaitkan dengan tetingkap atau tab penyemak imbas dan berterusan untuk tempoh sesi tersebut. Walaupun SessionStorage menyediakan beberapa kemudahan dalam beberapa aspek, ia juga mempunyai beberapa had dan kelemahan Artikel ini akan membincangkan isu ini satu demi satu dan memberikan contoh kod khusus.

  1. Had Kapasiti Data

Salah satu had utama SessionStorage ialah kapasiti data. Pelayar yang berbeza mempunyai sekatan yang berbeza pada kapasiti storan maksimum SessionStorage, biasanya antara 5MB dan 10MB. Apabila data yang disimpan melebihi had ini, ralat "QuotaExceededError" akan dicetuskan. Berikut ialah kod sampel yang menunjukkan cara menggunakan SessionStorage untuk menyimpan jumlah data yang lebih besar:

// 生成一个1MB大小的字符串
const largeData = "a".repeat(1024 * 1024);
try {
  sessionStorage.setItem("largeData", largeData);
} catch (error) {
  if (error.name === "QuotaExceededError") {
    console.log("存储容量已满");
  } else {
    console.log("存储失败");
  }
}
  1. Sekatan dasar asal

SessionStorage mengasingkan data mengikut dasar asal yang sama. Dasar asal yang sama menghendaki akses SessionStorage hanya boleh dilakukan antara halaman asal yang sama, iaitu protokol, nama domain dan port mestilah betul-betul sama. Ini bermakna jika halaman yang berbeza adalah daripada domain atau subdomain yang berbeza, mereka tidak akan dapat mengakses SessionStorage masing-masing. Contoh berikut menunjukkan ketidakupayaan untuk mengakses SessionStorage antara domain yang berbeza:

Halaman di bawah domain www.example.com:

sessionStorage.setItem("key", "value");

Halaman di bawah domain subdomain.example.com:

const value = sessionStorage.getItem("key");
console.log(value); // 输出null
  1. Sesi hilang
sionStorage sah

tempoh sesi penyemak imbas tetapi mungkin hilang dalam beberapa kes. Apabila pengguna menutup tetingkap atau tab penyemak imbas, semua data dalam SessionStorage akan dipadamkan. Ini bermakna apabila pengguna membuka semula tapak web, data yang disimpan sebelum ini tidak akan tersedia lagi. Berikut ialah contoh kod yang menunjukkan situasi kehilangan sesi:
    // 存储数据
    sessionStorage.setItem("name", "John");
    
    // 关闭浏览器窗口或标签页
    
    // 重新打开网站
    const name = sessionStorage.getItem("name");
    console.log(name); // 输出null
  1. Risiko keselamatan yang terdedah

Memandangkan SessionStorage menyimpan data di sisi pelanggan, terdapat risiko keselamatan. Kod hasad atau tapak web hasad boleh mengakses data sensitif, seperti maklumat peribadi pengguna, melalui SessionStorage. Oleh itu, pembangun perlu menggunakan SessionStorage dengan berhati-hati dan memastikan kerahsiaan dan integriti data.

Ringkasan:

Artikel ini meneroka batasan dan kelemahan SessionStorage, termasuk had kapasiti data, sekatan dasar asal yang sama, kehilangan sesi dan risiko keselamatan. Walaupun isu ini, SessionStorage masih merupakan penyelesaian storan sebelah pelanggan yang mudah yang masih boleh berguna dalam senario yang betul. Pembangun harus secara munasabah memilih penyelesaian storan berdasarkan keperluan dan senario tertentu. 🎜

Atas ialah kandungan terperinci Siasat batasan dan perangkap SessionStorage. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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