Безопасность и данные
XSS, CSRF, SQL-инъекции, загрузка файлов, доступы, зависимости, секреты, приватность и согласия
Материалы
- Безопасность веб-приложения
Изучаем безопасность на примере библиотеки личных заметок: модель угроз, проверка данных, XSS, SQL, пароли, сессии, права доступа, файлы и эксплуатация приложения.
- Модель угроз веб-приложения
Активы, границы доверия и проверяемые требования
- Локальный стенд безопасности
Отдельный Flask-проект и два учебных владельца заметок
- Проверка входных данных
Серверные ограничения формы и параметров
- XSS и контекст вывода
Текстовые заметки без интерпретации HTML
- CSP и защитные заголовки
Политика ресурсов и ограничения её действия
- SQL-запросы с параметрами
Запросы SQLite без подстановки пользовательского кода
- Хранение и проверка паролей
Хеширование пароля и проверка через библиотеку
- Сессии и cookie
Подпись, срок сессии и параметры cookie
- Права на отдельные объекты
Проверка владельца каждой заметки
- Защита форм от CSRF
Токен для изменяющих запросов
- Перенаправления и адреса
Возврат только на разрешённые маршруты
- Безопасная загрузка изображений
Ограниченный PNG и новое серверное имя
- Пути и доступ к файлам
Выдача вложения после проверки владельца
- SSRF и исходящие запросы
Фиксированный сетевой договор вместо произвольного URL
- Безопасность API и CORS
JSON-договор, права и запрет лишних возможностей
- Ограничение попыток и нагрузки
Локальный лимит и описание границ общей защиты
- Секреты, ошибки и журналы
Непубличная конфигурация и журнал без паролей
- Безопасность зависимостей
Процесс проверки состава и известных уязвимостей
- HTTPS и доверие к прокси
Связь внешнего HTTPS с настройками приложения
- Жизненный цикл данных
Хранение, удаление и копии в одной модели
- Действия при утечке и инциденте
План ограничения ущерба и отзыва доступа
- Проверка безопасности перед выпуском
Матрица требований и полный учебный исходник
- Единый вход: OAuth, OIDC и passkeys
14 уроков одного развивающегося проекта: Разделить приложение, провайдера идентичности и браузер. Зафиксировать HTTPS, внешнюю сессию, конфигурацию и журнал событий.