Инъекции, XSS и CSRF
три самых частых класса атак на backend и способы защиты от них.
Почему это важно: Эти уязвимости встречаются в большинстве веб-приложений, которые не применяют базовые защитные меры.
Главная идея
Параметризованные запросы убивают SQL injection. Экранирование убивает XSS. CSRF-токены убивают CSRF.
Как это выглядит на практике
- SQL injection: пользователь вставляет ' OR 1=1 — в поле логина, обходит авторизацию.
- XSS: атакующий сохраняет alert(1) в профиле, скрипт исполняется у всех, кто смотрит профиль.
- CSRF: жертва открывает зловредный сайт, который отправляет POST-запрос от её имени на banking API.
- Каждая уязвимость закрывается конкретной техникой.
Что происходит под капотом
- SQL injection: никогда не конкатенируйте пользовательский ввод в запрос. Используйте prepared statements.
- XSS: экранируйте HTML при выводе, используйте Content Security Policy.
- CSRF: требуйте синхронизационный токен или проверяйте Origin/Referer.
- SameSite cookies (Lax/Strict) — дополнительный слой защиты от CSRF.
Типичные ошибки и заблуждения
- Ошибка: ORM защищает от всех SQL injection. Raw-запросы и LIKE-паттерны требуют осторожности.
- Ошибка: XSS — проблема фронтенда. Без правильного экранирования на backend фронтенд бессилен.
- Ошибка: CSRF защищён SPA. Только если API требует custom header и CORS настроен.
- Ошибка: HTTPS защищает от XSS. HTTPS защищает канал, но не содержимое.
Ключевые выводы
- Никогда не доверяйте пользовательскому вводу.
- Prepared statements — решение для SQL injection.
- CSP — мощный щит против XSS.
- SameSite=Lax cookies по умолчанию сильно снижают риск CSRF.
Термины урока
Связь с работой backend-разработчика
Эти три класса уязвимостей закрываются на уровне фреймворка и осознанных практик кода. Все современные фреймворки предоставляют инструменты защиты — используйте их.
Мини-разбор реальной ситуации
Разработчик написал raw SQL с конкатенацией для 'небольшого admin-интерфейса'. Админка осталась без проверки, и злоумышленник через SQL injection получил токены всех пользователей.
Что запомнить
- Prepared statements для SQL.
- Экранирование для HTML.
- CSRF-токены и SameSite cookies для форм.
Итог
SQL injection, XSS, CSRF — классика атак, и защита от них известна. Главная ошибка — пренебрегать проверенными практиками.
Комментарии к уроку
Войдите, чтобы оставить комментарий.
Пока нет комментариев — будьте первым.