TOCTOU — гонка между проверкой пути и действием: после exists() или проверки прав файл может быть заменён. По возможности выполняйте нужную операцию атомарно и проверяйте уже открытый дескриптор.
Что такое уязвимость race condition на уровне файловой системы (TOCTOU — Time-of-Check to Time-of-Use) и как её избежать в Python?
TOCTOU — гонка между проверкой пути и действием: после exists() или проверки прав файл может быть заменён. По возможности выполняйте нужную операцию атомарно и проверяйте уже открытый дескриптор.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
TOCTOU — гонка между проверкой пути и действием: после exists() или проверки прав файл может быть заменён. По возможности выполняйте нужную операцию атомарно и проверяйте уже открытый дескриптор.
Для создания нового файла без перезаписи подходит open(path, "x"), а для временного — безопасные функции tempfile, не ручная генерация имени. В чувствительном коде используют операции относительно доверенного dir_fd, ограничения на ссылки и проверку через fstat. Один O_NOFOLLOW обычно защищает лишь последний компонент, а не весь путь. Обрабатывайте ошибки самой операции; предварительная проверка не является гарантией неизменности файловой системы.
Источник: docs.python.org.