我需要一种方法来验证文件是否在特定路径下。如果路径为/var/www
且文件为/var/www/something/something-else/file
,则需要返回true
。如果文件为/var/www/../../etc/passwd
,我需要返回false
。
在PHP版本中,我通常使用一个名为realpath()
的函数:
realpath()展开所有符号链接并解析对' /./',' /../'的引用;和额外的' /'输入路径中的字符并返回规范化的绝对路径名。
我在所需路径和完整文件路径上运行realpath()
,然后确定所需路径是否是完全解析文件路径结果的子字符串。如果是,我会返回true
。
Node.js是否有实现相同目标的功能? path.resolve()
让我走了一半,但没有处理文件系统中实际存在的任何符号链接。 fs.readlink()
完全没有任何文档,因为我不会总是有符号链接,所以可能无法直接应用。
我必须遍历路径的每个部分,在我去的时候解析符号链接,还是有更规范的方法?