DEV Community

Dragoljub Bogićević
Dragoljub Bogićević

Posted on • Edited on

Session Storage vs Local Storage vs Cookie

The main purpose of this post is to give you a brief overview of these features:

Session storage

  • stores data only for a session, meaning that the data is stored until the browser (or tab) is closed
  • data is never transferred to the server
  • can only be read on client-side
  • storage limit is about 5MB
  • opening multiple tabs/windows with the same URL creates sessionStorage for each tab/window
// Write
sessionStorage.setItem('key', 'value');

// Read
let data = sessionStorage.getItem('key');

// Delete
sessionStorage.removeItem('key');

// Delete all
sessionStorage.clear();

Local storage

  • stores data with no expiration date
  • storage limit is about 5MB
  • data is never transferred to the server

Cons:

  • plaintext, hence not secure by design
  • limited to string data, hence need to be serialized = can not be used by web workers
  • XSS
  • can only be read on client-side
// Write
localStorage.setItem('key', 'value');

// Read
let data = localStorage.getItem('key');

// Delete
localStorage.removeItem('key');

// Delete all
localStorage.clear();

Cookie

  • stores data with expiration date
  • storage limit is about 4KB
  • cookie is sent to the server with each request
  • can be read/write on client-side and server-side (if the cookie is marked as HttpOnly than it is inaccessible to client-side scripts)
// Write
document.cookie = "key=value";

// Read
let x = document.cookie;

// Update
document.cookie = "key=new value";

// Delete - for deletion you should set expiration parameter to past date
document.cookie = "expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

Top comments (4)

Collapse
 
Sloan, the sloth mascot
Comment deleted
Collapse
 
bogicevic7 profile image
Dragoljub Bogićević

Well not exactly, the post is about session storage, local storage and cookies... It is like brief overview of the features and differences, the post is not about client-side storage.

Collapse
 
javierpomachagua profile image
Javier Pomachagua

If I'm building a Nuxt Client with a Net Core backend.
Should I use cookies for storaging token?

Collapse
 
bogicevic7 profile image
Dragoljub Bogićević

I do not know, using cookies even with HttpOnly and secure flags are still vulnerable to XSS and CSRF...