Есть ли безопасный способ создать каталоги с помощью файловой системы Std ::?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли безопасный способ создать каталоги с помощью файловой системы Std ::?

Сообщение Anonymous »

Я сравнил описание posix mkdir против

[*] Описание std :: fileSystem :: create_directory ,
[*] Спецификация для STD :: FileSystem :: Create_Directory и и
и < /li>
< /ul>
В лицо, описанное в 2612: Установка свободных разрешений на файлы posix является чувствительным к безопасности для Sonarqube: < /p>

В единоличных системах. Владельцы. и члены группы, назначенной этому ресурсу. Функции).
Теперь мне кажется, что нет способа, в которой реализация, основанная на C ++ , не может быть в безопасности в отношении этой проблемы. (без атрибутов, а затем следуйте с помощью std :: fileystem :: permissions или
[*] У меня есть каталог с правильными атрибутами, и я использую его в качестве базы копирования.

Однако первый подход выглядит как условие гонки. Между созданием каталога и настройками разрешения злоумышленник может злоупотреблять уже существующим каталогом. Кроме того, поскольку API, по -видимому, основан на (текстовых) путях, фактический каталог может быть каким -то образом изменен, сделав второй вызов недопустимым. Как и функциональность mkdirat вообще не покрывается. Вместо этого, поскольку API, по -видимому, основан на (текстовых) путях, это полностью склонные компоненты пути, изменяющие их «значение», в то время как функции выполняются.
Интересно, как примечание Cppreference.com и спецификационный черновик, кажется, отличаются от поведения в окнах. случай может быть рассмотрен, игнорируя проблему create_directory и проверка последующего разрешения вызов, я не проверял, если это так. А также, кажется, что настоящая проблема все еще была бы там под капотом. Интересно, почему эти функции create_directory /create_directories были разработаны таким образом ...

Подробнее здесь: https://stackoverflow.com/questions/797 ... filesystem
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»