TOCTOU — гонка между проверкой пути и действием: после exists() или проверки прав файл может быть заменён. По возможности выполняйте нужную операцию атомарно и проверяйте уже открытый дескриптор.
Хранимая процедура уязвима, если склеивает SQL из недоверенных строк и затем выполняет его. ORM снижает риск при параметризованных операциях, но не даёт стопроцентной защиты для raw SQL и динамических фрагментов.
No-GIL заменяет глобальную защиту сочетанием локальных блокировок, безопасного управления ссылками и памятью. Biased Reference Counting и mimalloc решают разные части задачи, а не являются новым GIL.
Mass Assignment возникает, когда пользователь может передать поля, которые ему запрещено изменять. DTO и Pydantic помогают через явный allowlist, но не устраняют риск автоматически.
Stateless JWT проверяется без обращения к хранилищу сессий, но его сложно немедленно отозвать. Blacklist добавляет серверное состояние и проверку отзыва, увеличивая зависимость от хранилища.
compile(source, filename, mode) создаёт объект кода, но не выполняет его. exec/eval с отдельными globals не образуют безопасную песочницу для недоверенного Python и не предотвращают RCE.
Чётко обозначьте свою роль: специалист по безопасности, разработчик правил или инженер интеграции. Критерии антифрода обычно согласуют с профильными экспертами, а разработчик обеспечивает корректное исполнение.
Для защиты от replay связывают подпись с содержимым запроса, временем и уникальным nonce, а использованные nonce атомарно запоминают на ограниченный срок. TLS сам по себе не решает повтор украденного запроса.
SSRF возникает, когда сервер делает запрос по адресу, которым управляет злоумышленник, и получает доступ к недоступным тому ресурсам. Защита требует контроля назначения, протокола и сетевого выхода.
tcp_max_syn_backlog ограничивает очередь незавершённых TCP-handshake, somaxconn — верхнюю границу listen backlog. Увеличение очередей сглаживает всплески, но само по себе не останавливает SYN-flood.
Фильтруйте исходный QuerySet по request.user или разрешённому tenant до поиска объекта по ID. Идентификатор владельца из входного запроса не должен определять доступ.
Refresh token позволяет держать access token короткоживущим, но сам требует особенно надёжной защиты. При краже его нужно отозвать, завершить затронутые сессии и заново аутентифицировать пользователя.