Безопасность веб-приложений и API на практике

Курс по безопасности веб-приложений и API для разработчиков и QA-инженеров. На локальном FastAPI-стенде вы воспроизведёте ошибки авторизации, работы с JWT, SQL-инъекции, XSS и SSRF, исправите уязвимый код и закрепите защиту тестами pytest и проверками в CI. В финале проведёте самостоятельный аудит новой версии…
Средний уровень
4–5 часов в неделю
Сертификат Stepik

Чему вы научитесь

  • Определять границы разрешённой проверки безопасности, воспроизводить уязвимое поведение в локальной лаборатории и сохранять исходные запросы и ответы
  • Составлять модель угроз приложения: выделять активы, участников, потоки данных и границы доверия
  • Формулировать сценарии злоупотребления, требования безопасности и приоритетный план проверок
  • Проверять хранение и проверку паролей, отличать подходящие алгоритмы хеширования от небезопасных способов хранения
  • Исследовать выпуск и проверку JWT, подпись, сроки действия и другие ограничения токенов доступа
  • Проверять обновление и отзыв токенов, повторное использование refresh-токенов и завершение сеансов
  • Сравнивать способы хранения учётных данных в браузере, проверять атрибуты cookie и защиту от CSRF
  • Проверять восстановление доступа: срок жизни и однократность токена сброса, раскрытие существования учётной записи и отзыв старых сеансов
  • Выявлять и исправлять доступ к чужим объектам и административным функциям при действительном токене пользователя
  • Проверять ограничения доступа к отдельным полям, защищать изменение свойств объектов и составлять матрицу разрешённых и запрещённых действий
  • Воспроизводить SQL-инъекции и исправлять формирование запросов с помощью параметризации
  • Находить небезопасный HTML-вывод и устранять XSS с учётом контекста отображения данных
  • Исследовать инъекции команд оболочки и заменять небезопасный запуск команд вызовами без интерпретации пользовательского ввода
  • Ограничивать загрузку файлов по типу и размеру, предотвращать выход файловых путей за разрешённый каталог
  • Выявлять SSRF, проверять целевые адреса и перенаправления при исходящих HTTP-запросах сервера
  • Проверять таймауты, размер и структуру ответов внешних API, безопасно обрабатывать неожиданные данные и ошибки интеграций
  • Находить небезопасные настройки, открытые служебные маршруты и ошибки конфигурации CORS и защитных HTTP-заголовков
  • Предотвращать раскрытие секретов через ответы и журналы, проверять безопасный отказ при исключениях
  • Ограничивать размер запросов и выборок, частоту чувствительных операций и повторное выполнение значимых бизнес-действий
  • Фиксировать состав зависимостей, разбирать предупреждения об уязвимостях и проверять применимость найденной проблемы к приложению
  • Контролируемо обновлять зависимости и проверять целостность учебных артефактов по SHA-256
  • Писать регрессионные тесты безопасности на Python, проверяя как запрещённые, так и разрешённые сценарии после исправления
  • Использовать SAST и ограниченный DAST для проверки локального приложения, разбирать результаты сканеров и настраивать проверки в CI
  • Проводить ограниченный аудит незнакомой версии приложения: подтверждать проблемы, расставлять приоритеты, исправлять причины и оформлять воспроизводимый отчёт

О курсе

Безопасность Web и API: Поиск уязвимостей в веб-приложениях и API, исправления и проверка защиты

🧭 Отправная точка

API возвращает 200 OK, токен пользователя действителен, тело ответа соответствует схеме. Но пользователь получил данные чужого заказа: сервис установил его личность и пропустил проверку прав на конкретный объект.

Исправление такой ошибки нужно проверить с двух сторон. Посторонний пользователь должен получить отказ, а владелец — по-прежнему видеть свой заказ. Для этого недостаточно проверить код ответа: важно сопоставить результат с правилами доступа и фактическим поведением приложения.

На курсе вы будете исследовать безопасность учебного веб-приложения на FastAPI. В нём есть HTTP API, база SQLite, работа с файлами и взаимодействие с внутренним сервисом. Вы научитесь воспроизводить опасное поведение в локальной среде, находить причину в коде, вносить исправления и закреплять результат тестами.

🎯 Цель курса — научиться проводить ограниченный аудит веб-приложения и API: проверять границы доступа и обработки данных, подтверждать уязвимости наблюдаемыми результатами и исправлять их без нарушения штатных сценариев.

⚙️ Что вы будете делать

  • 🔎 Составлять модель угроз. Определите, какие данные и операции нужно защищать, кто имеет к ним доступ и где проходят границы доверия. На основе устройства учебного приложения подготовите проверяемые гипотезы и план безопасных проверок.

  • 🔐 Проверять аутентификацию и авторизацию. Исследуете хранение паролей, токены, сессии и восстановление доступа. Разберёте права на уровне объектов, функций и отдельных полей. В частности, проверите BOLA — доступ к чужому объекту при действительном токене пользователя — и напишете тесты для разрешённых и запрещённых операций.

  • 🧩 Исследовать обработку недоверенных данных. Воспроизведёте учебные ошибки в SQL-запросах, вызовах команд оболочки, выводе в браузере, загрузке файлов и обработке путей. Разберёте SSRF — нежелательные исходящие запросы от имени сервера — и проверку ответов внешних сервисов. Для каждого случая определите, где требуется защита, и повторите исходную проверку после исправления.

  • 🧪 Закреплять безопасность тестами и настройками. Проверите конфигурацию, секреты, обработку ошибок, журналы, ограничения ресурсов и повторные чувствительные операции. Разберёте состав зависимостей и предупреждения сканеров, освоите статический и динамический анализ. Добавите регрессионные тесты и проверки в CI.

🔥 Чем отличается курс

Вся практика связана с одним учебным приложением. Вы будете исследовать его HTTP-запросы, код и связанные компоненты, а затем проверять исправления в том же окружении. Это помогает проследить причину ошибки от входных данных до конкретной проверки или операции.

Для каждого подтверждённого дефекта вы сохраните исходный запрос и ответ, сформулируете причину и проверите минимальное изменение. После исправления повторите тот же небезопасный сценарий и обычную разрешённую операцию. Так можно убедиться, что защита работает и приложение сохраняет нужную функциональность.

Важная часть работы — отличать подтверждённую проблему от предположения. Например, предупреждение сканера зависимости требует проверки применимости к вашему приложению. Для инъекций важен путь недоверенных данных до исполняемой операции, для SSRF — фактическое назначение запроса и обработка перенаправлений, для авторизации — место принятия решения о доступе. Вы будете опираться на воспроизводимые результаты, а не только на название уязвимости.

Курс охватывает также ошибки конфигурации и бизнес-логики. Слишком подробные сообщения об ошибках и журналы могут раскрывать чувствительные сведения; отсутствие ограничений позволяет многократно вызывать дорогие или значимые операции. Вы проверите эти ситуации и научитесь выбирать защиту с учётом конкретного поведения сервиса.

Все проверки выполняются в специально подготовленной локальной лаборатории. Вы будете работать с учебными пользователями и синтетическими данными, не обращаясь к чужим сайтам или рабочей инфраструктуре. Границы проверок, допустимые операции и ограничения нагрузки задаются заранее.

📚 Дополнительные бесплатные материалы

🎯 Итоговый аудит

В финале вы получите новую версию знакомого приложения и самостоятельно проведёте ограниченный аудит. Определите допустимые цели и проверки, изучите поведение сервиса, подтвердите обнаруженные проблемы и расставите приоритеты с учётом их влияния и доказательств.

Затем исправите причины подтверждённых ошибок, повторите первоначальные запросы, проверите разрешённые действия и добавите регрессионные тесты. Завершите работу целевыми и общими проверками приложения.

Итогом станут исправленный учебный проект и технический отчёт: границы аудита, исходные наблюдения, подтверждённые проблемы, внесённые изменения, результаты повторных проверок и оставшиеся риски. Отчёт должен позволять другому инженеру воспроизвести выводы и понять пределы проведённой проверки.

🧪 Поддержка

🤝 Вопросы по материалам курса можно задавать в комментариях Stepik. Разбирая сложную ситуацию, приложите название урока, свои действия и полученный результат — так проще понять причину ошибки и предложить следующий шаг.

✅ Практические работы проверяет преподаватель. Вы получаете обратную связь по выполненному заданию: что соответствует требованиям, что стоит исправить и на что обратить внимание при повторной проверке.

🚀 О XNova

XNova — практические курсы и учебные проекты для разработчиков, тестировщиков и инженеров. Мы разбираем технологии на работающих примерах: с кодом, наблюдаемым результатом и объяснением инженерных решений.

🔗 xnova.dev — другие курсы и материалы XNova.

📬 Контакты и сообщество

Продолжить знакомство с XNova, следить за новыми материалами или задать организационный вопрос можно здесь:

  • 📣 Telegram-канал: @xnova_dev — анонсы курсов, статьи и новости проекта.
  • 💬 Написать XNova: @xnova_contact — контакт для вопросов о курсах и проекте.
  • ✉️ Почта: contact@xnova.dev — если удобнее написать письмом.
  • 💻 GitHub: xnova-tech — открытые учебные проекты и примеры.

🔒 Доступ к разделам

⚠️ Важно! Модули курса открываются постепенно. Чтобы перейти к следующему модулю, необходимо набрать определённое количество баллов в текущем. Это вынужденная мера. Выполнять все задания не требуется, достаточно выполнить основную часть.

Для кого этот курс

— Backend-разработчики, которые работают с HTTP API и хотят научиться находить уязвимости в серверной логике, исправлять причины ошибок доступа и обработки данных, а затем подтверждать защиту тестами. — QA/AQA-инженеры, которые проверяют веб-приложения и API и хотят расширить обычные функциональные сценарии проверками аутентификации, авторизации, инъекций и небезопасных настроек. — Инженеры по информационной безопасности и AppSec, знакомые с Python и HTTP, которым нужна практика воспроизведения уязвимостей, анализа кода, оценки результатов сканеров и подготовки технических отчётов. — DevOps- и платформенные инженеры, которые отвечают за конфигурацию приложений, зависимости и CI и хотят выявлять небезопасные настройки, утечки секретов и нарушения проверок безопасности до выпуска.

Начальные требования

📚 Что нужно знать

  • Python: уверенно читать и изменять существующий код; основы языка в курсе не изучаются.
  • HTTP API: понимать методы, статусы, заголовки, JSON и работу с bearer-токенами.
  • Git и терминал: работать с ветками и коммитами, читать изменения кода и отправлять запросы через curl.

🧰 Что понадобится

  • Python 3.12, Git и curl для локального учебного приложения. В последующих модулях потребуется Docker Compose.
  • Аккаунт GitHub для работы с учебным репозиторием и собственной копией.
  • Linux или macOS; для Windows — WSL 2 с Ubuntu 24.04. POSIX-совместимая оболочка обязательна для практики по инъекциям команд: одного PowerShell недостаточно.

В курсе используются только учебные сервисы и данные. Рабочие токены, чужие системы и реальные персональные данные не нужны. Настройка окружения и отдельные команды для Windows приведены в практических уроках.

Как проходит обучение

🔐 Каждый разобранный дефект доводите до проверенного исправления. Объяснения и вопросы чередуются с практикой в одном локальном Web/API-приложении.

  • 🔎 Воспроизводите поведение: проверяете доступ, обработку данных и конфигурацию на конкретных сценариях.
  • 🛠️ Исправляете причину: меняете приложение и повторяете как уязвимый, так и обычный рабочий сценарий.
  • ✅ Закрепляете результат: добавляете регрессионные тесты и собираете итоги ограниченного аудита.

Программа курса

В курс входят

  • 58 уроков
  • 1час 22минуты видео
  • 53 теста
  • 13 интерактивных задач
загружаем...

Наши преподаватели

Certificate

Сертификат

Сертификат Stepik

Что вы получаете

  • Собственная рабочая копия учебного FastAPI-приложения с SQLite, файловым хранилищем и внутренним HTTP-сервисом, в которую внесены проверенные исправления
  • Модель угроз с активами, границами доверия, сценариями злоупотребления и планом проверок безопасности
  • Исправления механизмов аутентификации и авторизации с матрицей разрешённых и запрещённых действий пользователей
  • Исправленные сценарии обработки недоверенных данных: SQL-запросы, выполнение команд, HTML-вывод, загрузка файлов и исходящие HTTP-запросы
  • Проверенные настройки приложения и обработки ошибок, журналирование без раскрытия секретов и ограничения ресурсоёмких запросов и повторных операций
  • Результаты анализа зависимостей, обоснование исправлений и проверки целостности учебных артефактов
  • Набор регрессионных тестов безопасности на pytest, результаты проверок SAST/DAST и настройки запуска проверок в CI
  • Итоговые исправления отдельной версии учебного приложения с повторными проверками исходных уязвимых и обычных разрешённых сценариев
  • Технический отчёт по ограниченному аудиту с доказательствами, приоритетами, причинами ошибок, внесёнными изменениями и оставшимися рисками

Сколько стоит обучение

4 490 ₽
Вы попробовали и поняли, что вам сейчас не подходит этот курс? Ничего страшного, мы вернём вам деньги в течение 30-ти дней после покупки.

Часто задаваемые вопросы

Расскажите о курсе друзьям