Хранение данных (Client-side Storage)
Все клиентские хранилища (localStorage, sessionStorage, IndexedDB, cookies без флага HttpOnly) доступны любому JavaScript-коду на странице.
Правила
Cookies
✅ MUST: Cookies д олжны иметь флаги:
HttpOnly(защита от JavaScript)Secure(передача только по HTTPS)SameSite=StrictилиSameSite=Lax(защита от CSRF)
LocalStorage / IndexedDB
❌ FORBIDDEN: Хранить следующие данные в localStorage/sessionStorage/IndexedDB:
- Access tokens / Refresh tokens
- Пароли
- Персональные данные (PII): email, телефон, адрес
- Данные платежных карт
- API ключи
- Секретные ключи
✅ MUST: Данные из client storage считаются недоверенными и должны валидироваться (например, через zod или yup)
Что можно хранить
✅ MAY: Хранить в localStorage:
- UI-состояние (тема, язык, размер шрифта)
- Пользовательские настройки интерфейса
- Кеш непубличных данных (с валидацией)
- Состояние драфтов (с шифрованием для чувствительных данных)