Безопасность
Введение
Безопасность — обязательное требование и коллективная ответственность команды. Нарушение данных требований может привести к утечке данных, финансовым и юридическим рискам, компрометации инфраструктуры и потере доверия пользователей.
Frontend-код выполняется в браузере — неконтролируемой среде. Любые данные, токены и состояние на клиенте могут быть прочитаны, изменены или подделаны.
Основополагающие принципы
MUST
-
Нулевое доверие к данным
- Клиент (ваше приложение) никогда не является доверенной стороной
-
Все входящие данные считаются недоверенными независимо от источника:
- Пользовательский ввод
- URL и query-параметры
- Ответы внешних API (third-party сервисы, публичные endpoints)
localStorage,sessionStorage,IndexedDBpostMessageот других окон / фреймов- Cookies без флага
HttpOnly
-
Валидация на клиенте ≠ Безопасность
- Клиентская валидация улучшает UX, но не защищает систему
- Любая проверка, влияющая на безопасность и целостность данных, выполняется на backend
Обязательные материалы для изучения
Разделы документации
- Cross-Site Scripting (XSS) — Защита от межсайтового скриптинга, безопасный рендеринг HTML, Trusted Types
- Хранение данных — Client-side storage, cookies, токены, PII, Storage Events
- Environment — Правила работы с environment variables
- Content Security Policy и Security-заголовки — Настройка CSP, security-заголовки, SRI
- Browser APIs — Безопасное использование postMessage, Clipboard API, Storage Events
- Логирование и ошибки — Безопасное логирование, source maps
- Безопасность зависимостей — Аудит пакетов, lock-файлы, SAST
- Контроль и автоматизация — Чек-листы, ESLint, CI/CD