Какие знаешь виды атак на Frontend-приложение?
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Основные виды атак на Frontend-приложения
Frontend-приложения, выполняющиеся в среде браузера, подвержены множеству угроз безопасности. Атаки на клиентскую часть часто направлены на кражу данных, компрометацию сессий или нарушение работы приложения.
1. Межсайтовый скриптинг (XSS)
XSS — одна из наиболее распространённых и опасных атак. Злоумышленник внедряет вредоносный JavaScript-код, который выполняется в браузере жертвы.
- Reflected XSS: Скрипт внедряется через параметры URL и немедленно выполняется.
- Stored XSS: Вредоносный код сохраняется на сервере (например, в базе данных) и выполняется при каждом обращении к заражённой странице.
- DOM-based XSS: Уязвимость существует исключительно в клиентском коде, без участия сервера.
// Пример уязвимого кода для Reflected XSS
const queryParams = new URLSearchParams(window.location.search);
const searchTerm = queryParams.get('q');
document.getElementById('results').innerHTML = `Вы искали: ${searchTerm}`;
// Если q=<script>alert('XSS')</script>, скрипт выполнится
// Защита: экранирование HTML-сущностей
const safeTerm = escapeHtml(searchTerm);
2. Межсайтовая подделка запроса (CSRF)
CSRF заставляет браузер жертвы выполнять нежелательные действия в веб-приложении, где пользователь аутентифицирован. Атакующий создаёт поддельную форму или отправляет запрос от имени пользователя.
Методы защиты:
- Использование CSRF-токенов, уникальных для каждой сессии
- Проверка заголовка
OriginилиReferer - Требование повторного ввода пароля для критических операций
3. Подделка межсайтовых запросов (XSRF/CSRF)
Хотя часто считается синонимом CSRF, некоторые источники выделяют XSRF как отдельный класс атак, связанных с эксплуатацией доверия браузера к cookies.
4. Clickjacking (Наведение на фрейм)
Атакующий накладывает невидимый iframe с целевым сайтом под интерактивными элементами. Пользователь, кликая на кнопку, фактически выполняет действие на целевом сайте.
Защита:
X-Frame-Options: DENY
Content-Security-Policy: frame-ancestors 'none'
5. Небезопасная обработка данных (Insecure Data Handling)
- Утечка данных через кеш браузера: Критичные данные сохраняются в
localStorage,sessionStorageили кеше - Небезопасная десериализация: Использование
eval()илиFunction()для обработки данных - Недостаточная валидация на клиенте: Проверка только на фронтенде без дублирования на бэкенде
6. Атаки на зависимости (Dependency Attacks)
Современные приложения используют сотни пакетов NPM, которые могут содержать уязвимости или злонамеренный код.
Меры предосторожности:
- Регулярное обновление зависимостей
- Использование
npm auditилиyarn audit - Внедрение инструментов статического анализа (SAST)
7. Атаки на конфигурацию CORS
Неправильная настройка CORS позволяет сторонним сайтам получать доступ к данным вашего API.
// Опасная конфигурация
app.use(cors({
origin: '*', // Разрешает запросы с любого источника
credentials: true // Разрешает отправку cookies
}));
// Более безопасная конфигурация
app.use(cors({
origin: ['https://trusted-domain.com'],
credentials: true,
methods: ['GET', 'POST']
}));
8. Атаки на веб-хранилище (Web Storage Attacks)
- XSS + LocalStorage: Вредоносный скрипт может читать/записывать данные в хранилище
- Утечка через индексацию: Google может индексировать данные из localStorage
9. Атаки на системы аутентификации
- Хранение токенов в небезопасных местах: В
localStorageвместоhttpOnlycookies - Отсутствие инвалидации сессии на стороне клиента
- Уязвимости в OAuth/OpenID Connect flow
10. Атаки через сторонние ресурсы (Third-Party Risks)
- Скомпрометированные CDN: Подмена библиотек на вредоносные версии
- Уязвимости в аналитических скриптах: Google Analytics, Hotjar и т.д.
- Проблемы с iframe: Встраивание контента из ненадёжных источников
Комплексные меры защиты
- Внедрение Content Security Policy (CSP):
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com;
- Использование современных заголовков безопасности:
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Referrer-Policy: strict-origin-when-cross-origin
-
Регулярное тестирование безопасности:
- Автоматизированное сканирование уязвимостей
- Ручное тестирование (pentesting)
- Code review с фокусом на безопасность
-
Защита данных на клиенте:
- Использование
HttpOnlyиSecureфлагов для cookies - Очистка sensitive данных из памяти
- Шифрование критичных данных перед сохранением
- Использование
-
Мониторинг и логирование:
- Отслеживание подозрительной активности
- Сбор логов с фронтенда (Sentry, LogRocket)
- Реагирование на инциденты
Фронтенд-разработчики должны осознавать, что безопасность — это процесс, а не разовое мероприятие. Недостаточно просто реализовать защитные механизмы — необходимо постоянно обновлять знания, следить за новыми угрозами и проводить регулярный аудит безопасности приложения.