你好,
我正在创建一个界面,允许其他人在我的机器上的某个目录中创建文件。 现在我正在初始化一个工作目录,这是唯一允许用户创建文件的目录。
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版还是可以的iterate在 path
上检查“..”条目,这也会拒绝一些无害(但有用的)情况。
关于c++ - 防止用户离开 std::experimental::filesystem 中的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50058764/