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.