Средний

Инъекции, XSS и CSRF

Урок 2 из 3 в курсе Безопасность backend: основы

Содержание курса (2/3)

Инъекции, XSS и CSRF

три самых частых класса атак на backend и способы защиты от них.

Почему это важно: Эти уязвимости встречаются в большинстве веб-приложений, которые не применяют базовые защитные меры.

Главная идея

Параметризованные запросы убивают SQL injection. Экранирование убивает XSS. CSRF-токены убивают CSRF.

Как это выглядит на практике

  1. SQL injection: пользователь вставляет ' OR 1=1 — в поле логина, обходит авторизацию.
  2. XSS: атакующий сохраняет alert(1) в профиле, скрипт исполняется у всех, кто смотрит профиль.
  3. CSRF: жертва открывает зловредный сайт, который отправляет POST-запрос от её имени на banking API.
  4. Каждая уязвимость закрывается конкретной техникой.

Что происходит под капотом

  • 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.

Термины урока

SQL injection: внедрение SQL-кода через пользовательский ввод.
XSS: Cross-Site Scripting, внедрение JavaScript в страницу.
CSRF: Cross-Site Request Forgery, подделка запроса от имени жертвы.
CSP: Content Security Policy, заголовок, ограничивающий источники ресурсов.

Связь с работой backend-разработчика

Эти три класса уязвимостей закрываются на уровне фреймворка и осознанных практик кода. Все современные фреймворки предоставляют инструменты защиты — используйте их.

Мини-разбор реальной ситуации

Разработчик написал raw SQL с конкатенацией для 'небольшого admin-интерфейса'. Админка осталась без проверки, и злоумышленник через SQL injection получил токены всех пользователей.

Что запомнить

  • Prepared statements для SQL.
  • Экранирование для HTML.
  • CSRF-токены и SameSite cookies для форм.

Итог

SQL injection, XSS, CSRF — классика атак, и защита от них известна. Главная ошибка — пренебрегать проверенными практиками.

Комментарии к уроку

Войдите, чтобы оставить комментарий.

Пока нет комментариев — будьте первым.