Безопасность Python-бэкенда: что вы проверяете
Вопрос
Какие меры безопасности вы закладываете в бэкенд на Django или FastAPI с первого дня?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Инъекции: только ORM и параметризованные запросы, белые списки для идентификаторов
Контроль доступа: запрет по умолчанию, проверка объектов
XSS и CSRF: автоэкранирование, без `|safe`, CSRF для cookie-авторизации
SSRF, загрузка файлов, опасные функции (pickle, eval, shell=True)
Настройки: DEBUG выключен, HTTPS, HSTS, флаги cookie, секреты в окружении
Зависимости, лимиты, логирование и алерты
Что могут спросить следом
- Как вы проверяете зависимости на уязвимости?
- Что логировать, а что нельзя?
Разбор
Образцовый ответ: «Начинаю с контроля доступа, потому что это самая частая проблема: все эндпоинты требуют вход по умолчанию, данные фильтруются по владельцу или организации в одном месте, тесты проверяют доступ к чужим объектам. Против инъекций использую ORM и параметризованные запросы, а то, что нельзя параметризовать, например поле сортировки, беру из белого списка. В шаблонах не использую |safe на пользовательских данных, если нужен HTML, то санитайзер. Для API на cookie не отключаю CSRF. Внешние URL от пользователя скачиваю только через защиту от SSRF. Никаких pickle, eval, yaml.load и shell=True с внешними данными. Загрузки: свои имена файлов, проверка типа, лимит размера, отдача с отдельного домена. В настройках DEBUG=False, HTTPS и HSTS, Secure и HttpOnly у cookie, секреты в окружении, check --deploy в CI. Зависимости фиксирую lock-файлом и проверяю pip-audit или Dependabot. Плюс лимиты размера и частоты запросов, логирование событий безопасности без паролей и токенов в логах».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Код-ревью: поиск, редирект и импорт настроек
Следующий вопрос
Как защитить загрузку по URL от SSRF