intermediate

Безопасность хранилищ

Выбирайте cookie, memory, Web Storage, IndexedDB или Cache Storage по чувствительности данных, времени жизни и риску XSS.

Выбор клиентского хранилища зависит от чувствительности, срока жизни, паттерна доступа и модели атакующего. Память кратковечна и теряется при перезагрузке, cookies могут быть HttpOnly, но уходят с запросами автоматически, Web Storage прост, но доступен при XSS, IndexedDB и Cache Storage держат большие данные, которые нужно безопасно инвалидировать.

| Хранилище | Читается при XSS | Авто в запросах | Типичное применение | |-----------|------------------|-----------------|---------------------| | Память | Да | Нет | эфемерный UI state | | HttpOnly cookie | Нет (JS) | Да | id сессии | | localStorage | Да | Нет | мелкие настройки | | IndexedDB / Cache | Да | Нет | offline-данные |

На интервью: ответ с приоритетом безопасности, а не только сравнение объёма.

Типовые ошибки: access tokens в localStorage — кража сессии при XSS; персистентный кэш на общем устройстве — данные прошлого пользователя.

Компромисс: удобство против контроля — выбирайте механизм под вашу связность и бюджет производительности.

Чеклист:

  • Сначала классифицируйте чувствительность.
  • Минимизируйте срок и scope.
  • Logout и инвалидация кэша.
  • Защита в глубину от XSS.