Код фронтенда открыт любому пользователю, поэтому фронтенд не может быть местом проверки прав — это делает сервер. Задача фронтенда — не открыть дыру в браузере пользователя.
Основные угрозы
- XSS — внедрение чужого скрипта через данные. Защита: экранирование вывода (React делает это сам), осторожность с
innerHTMLиdangerouslySetInnerHTML, санитизация HTML (DOMPurify), CSP. - CSRF — чужой сайт отправляет запрос с cookies пользователя. Защита:
SameSiteу cookies, CSRF-токены, проверкаOrigin. - CORS — механизм, который ослабляет ограничение одного источника для доверенных доменов; ошибка CORS в консоли — это настройка сервера.
Токены и сессии
| где хранить | XSS | CSRF |
|---|---|---|
localStorage | украдут скриптом | не уязвим |
cookie HttpOnly; Secure; SameSite | скрипт не прочитает | нужна защита SameSite или токеном |
Чаще рекомендуют cookie с HttpOnly и короткоживущий токен доступа.
Ещё
- Content Security Policy ограничивает источники скриптов.
- Зависимости — регулярное обновление и аудит.
- Не класть секреты в код фронтенда и переменные сборки.