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

🧭 Отправная точка
API возвращает 200 OK, токен пользователя действителен, тело ответа соответствует схеме. Но пользователь получил данные чужого заказа: сервис установил его личность и пропустил проверку прав на конкретный объект.
Исправление такой ошибки нужно проверить с двух сторон. Посторонний пользователь должен получить отказ, а владелец — по-прежнему видеть свой заказ. Для этого недостаточно проверить код ответа: важно сопоставить результат с правилами доступа и фактическим поведением приложения.
На курсе вы будете исследовать безопасность учебного веб-приложения на FastAPI. В нём есть HTTP API, база SQLite, работа с файлами и взаимодействие с внутренним сервисом. Вы научитесь воспроизводить опасное поведение в локальной среде, находить причину в коде, вносить исправления и закреплять результат тестами.
🎯 Цель курса — научиться проводить ограниченный аудит веб-приложения и API: проверять границы доступа и обработки данных, подтверждать уязвимости наблюдаемыми результатами и исправлять их без нарушения штатных сценариев.
⚙️ Что вы будете делать
-
🔎 Составлять модель угроз. Определите, какие данные и операции нужно защищать, кто имеет к ним доступ и где проходят границы доверия. На основе устройства учебного приложения подготовите проверяемые гипотезы и план безопасных проверок.
-
🔐 Проверять аутентификацию и авторизацию. Исследуете хранение паролей, токены, сессии и восстановление доступа. Разберёте права на уровне объектов, функций и отдельных полей. В частности, проверите BOLA — доступ к чужому объекту при действительном токене пользователя — и напишете тесты для разрешённых и запрещённых операций.
-
🧩 Исследовать обработку недоверенных данных. Воспроизведёте учебные ошибки в SQL-запросах, вызовах команд оболочки, выводе в браузере, загрузке файлов и обработке путей. Разберёте SSRF — нежелательные исходящие запросы от имени сервера — и проверку ответов внешних сервисов. Для каждого случая определите, где требуется защита, и повторите исходную проверку после исправления.
-
🧪 Закреплять безопасность тестами и настройками. Проверите конфигурацию, секреты, обработку ошибок, журналы, ограничения ресурсов и повторные чувствительные операции. Разберёте состав зависимостей и предупреждения сканеров, освоите статический и динамический анализ. Добавите регрессионные тесты и проверки в CI.
🔥 Чем отличается курс
Вся практика связана с одним учебным приложением. Вы будете исследовать его HTTP-запросы, код и связанные компоненты, а затем проверять исправления в том же окружении. Это помогает проследить причину ошибки от входных данных до конкретной проверки или операции.
Для каждого подтверждённого дефекта вы сохраните исходный запрос и ответ, сформулируете причину и проверите минимальное изменение. После исправления повторите тот же небезопасный сценарий и обычную разрешённую операцию. Так можно убедиться, что защита работает и приложение сохраняет нужную функциональность.
Важная часть работы — отличать подтверждённую проблему от предположения. Например, предупреждение сканера зависимости требует проверки применимости к вашему приложению. Для инъекций важен путь недоверенных данных до исполняемой операции, для SSRF — фактическое назначение запроса и обработка перенаправлений, для авторизации — место принятия решения о доступе. Вы будете опираться на воспроизводимые результаты, а не только на название уязвимости.
Курс охватывает также ошибки конфигурации и бизнес-логики. Слишком подробные сообщения об ошибках и журналы могут раскрывать чувствительные сведения; отсутствие ограничений позволяет многократно вызывать дорогие или значимые операции. Вы проверите эти ситуации и научитесь выбирать защиту с учётом конкретного поведения сервиса.
Все проверки выполняются в специально подготовленной локальной лаборатории. Вы будете работать с учебными пользователями и синтетическими данными, не обращаясь к чужим сайтам или рабочей инфраструктуре. Границы проверок, допустимые операции и ограничения нагрузки задаются заранее.
📚 Дополнительные бесплатные материалы
- 📄 IDOR: как пользователь получает доступ к чужим данным
- 📄 JWT-токены: что это, как устроены Access и Refresh Token
- 📄 Prompt Injection через инструменты AI-агента: как возникает атака
- 📄 OpenAPI 3.1: пример YAML-спецификации REST API с нуля
- 📄 SSL и TLS: в чём разница, как работает HTTPS и сертификаты
🎯 Итоговый аудит
В финале вы получите новую версию знакомого приложения и самостоятельно проведёте ограниченный аудит. Определите допустимые цели и проверки, изучите поведение сервиса, подтвердите обнаруженные проблемы и расставите приоритеты с учётом их влияния и доказательств.
Затем исправите причины подтверждённых ошибок, повторите первоначальные запросы, проверите разрешённые действия и добавите регрессионные тесты. Завершите работу целевыми и общими проверками приложения.
Итогом станут исправленный учебный проект и технический отчёт: границы аудита, исходные наблюдения, подтверждённые проблемы, внесённые изменения, результаты повторных проверок и оставшиеся риски. Отчёт должен позволять другому инженеру воспроизвести выводы и понять пределы проведённой проверки.
🧪 Поддержка
🤝 Вопросы по материалам курса можно задавать в комментариях Stepik. Разбирая сложную ситуацию, приложите название урока, свои действия и полученный результат — так проще понять причину ошибки и предложить следующий шаг.
✅ Практические работы проверяет преподаватель. Вы получаете обратную связь по выполненному заданию: что соответствует требованиям, что стоит исправить и на что обратить внимание при повторной проверке.
🚀 О XNova
XNova — практические курсы и учебные проекты для разработчиков, тестировщиков и инженеров. Мы разбираем технологии на работающих примерах: с кодом, наблюдаемым результатом и объяснением инженерных решений.
🔗 xnova.dev — другие курсы и материалы XNova.
📬 Контакты и сообщество
Продолжить знакомство с XNova, следить за новыми материалами или задать организационный вопрос можно здесь:
- 📣 Telegram-канал: @xnova_dev — анонсы курсов, статьи и новости проекта.
- 💬 Написать XNova: @xnova_contact — контакт для вопросов о курсах и проекте.
- ✉️ Почта: contact@xnova.dev — если удобнее написать письмом.
- 💻 GitHub: xnova-tech — открытые учебные проекты и примеры.
🔒 Доступ к разделам
⚠️ Важно! Модули курса открываются постепенно. Чтобы перейти к следующему модулю, необходимо набрать определённое количество баллов в текущем. Это вынужденная мера. Выполнять все задания не требуется, достаточно выполнить основную часть.
Для кого этот курс
Начальные требования
📚 Что нужно знать
- 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 интерактивных задач
Наши преподаватели
Сертификат
Что вы получаете
- Собственная рабочая копия учебного FastAPI-приложения с SQLite, файловым хранилищем и внутренним HTTP-сервисом, в которую внесены проверенные исправления
- Модель угроз с активами, границами доверия, сценариями злоупотребления и планом проверок безопасности
- Исправления механизмов аутентификации и авторизации с матрицей разрешённых и запрещённых действий пользователей
- Исправленные сценарии обработки недоверенных данных: SQL-запросы, выполнение команд, HTML-вывод, загрузка файлов и исходящие HTTP-запросы
- Проверенные настройки приложения и обработки ошибок, журналирование без раскрытия секретов и ограничения ресурсоёмких запросов и повторных операций
- Результаты анализа зависимостей, обоснование исправлений и проверки целостности учебных артефактов
- Набор регрессионных тестов безопасности на pytest, результаты проверок SAST/DAST и настройки запуска проверок в CI
- Итоговые исправления отдельной версии учебного приложения с повторными проверками исходных уязвимых и обычных разрешённых сценариев
- Технический отчёт по ограниченному аудиту с доказательствами, приоритетами, причинами ошибок, внесёнными изменениями и оставшимися рисками