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

标签 c++ filesystems

你好,

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

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/

相关文章:

linux - 公开上传的文件不显示

android - 检查给定文件是否存在于此路径上或 Android 文件系统中是否存在?

C++ : Count even/odd numbers in a range

c++ - 类比理解C++17中的结构化绑定(bind)

C++Builder 2007, union 和位字段

c++ - 当应用程序崩溃时,linux 缓冲区缓存的行为如何?

objective-c - 移动后找到文件

c++ - 当 ofstream 超出范围时偶尔出现 SEG FAULT

C++ try-except 语句

file - 如何在 Play Framework 中从服务器读取文件