PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Какие особенности хранилищ важно учитывать на практике и почему?

DOM и браузер

Особенности хранилищ: разный объём и срок жизни, только cookie отправляется на сервер, storage хранит только строки и уязвим к XSS, IndexedDB асинхронный, изоляция по origin.

Особенности

Разный объём и срок жизни

  • Cookie ~4 КБ, localStorage/session ~5–10 МБ, IndexedDB — большие объёмы.
  • localStorage — бессрочно, sessionStorage — на вкладку, cookie — настраивается.

Только cookie шлётся на сервер

Cookie автоматически отправляется с каждым запросом; storage и IndexedDB — только на клиенте.

Только строки (Web Storage)

localStorage/sessionStorage хранят строки — объекты сериализуют через JSON:

localStorage.setItem('user', JSON.stringify(user));

IndexedDB хранит структурированные данные (объекты, файлы).

Синхронность

  • localStorage/sessionStorage — синхронные (большие объёмы блокируют поток).
  • IndexedDB — асинхронный (не блокирует).

Уязвимость к XSS

Storage доступен любому JS — токены там уязвимы. Cookie с HttpOnly защищена.

Изоляция по origin

Все хранилища изолированы по origin; sessionStorage — ещё и по вкладке.

События

localStorage вызывает событие storage в других вкладках (синхронизация).

Практические выводы

  • Секреты не в storage (XSS).
  • Большие данные — IndexedDB (асинхронный).
  • Данные для сервера — cookie.
  • Объекты в storage — через JSON.

Коротко для собеседования

Особенности хранилищ: разный объём/срок (cookie ~4 КБ, storage ~5–10 МБ, IndexedDB — большой); только cookie шлётся на сервер; Web Storage хранит строки (JSON) и синхронный, IndexedDB — структурированный и асинхронный; storage уязвим к XSS (cookie — HttpOnly); изоляция по origin; storage-событие между вкладками.

Другие вопросы раздела