gpt4 book ai didi

c++ - 防止用户离开 std::experimental::filesystem 中的目录

转载 作者:太空宇宙 更新时间:2023-11-04 12:48:47 27 4
gpt4 key购买 nike

你好,

我正在创建一个界面,允许其他人在我的机器上的某个目录中创建文件。现在我正在初始化一个工作目录,这是唯一允许用户创建文件的目录。

namespace fs = std::experimental::filesystem;
auto working_path = fs::path(getenv("HOME")) / fs::path("work");

然后我将收到的文件名添加到工作路径。

file_name = work_path / file_name;

遗憾的是,这允许人们使用像“../Documents/”这样的路径来访问他们不应该访问的目录。

是否有更智能的方法来检查路径是否位于目录之外?

提前致谢

最佳答案

首先,检查要追加的路径没有root path ;在 Windows 上,这是比 is_relative 更强的声明.

显而易见的 C++17 答案是然后应用 lexically_normal并检查结果是否不以“..”开头。 TS版还是可以的iteratepath 上检查“..”条目,这也会拒绝一些无害(但有用的)情况。

关于c++ - 防止用户离开 std::experimental::filesystem 中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50058764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com