【发布时间】:2014-12-09 22:18:20
【问题描述】:
我需要一种方法来验证文件是否在特定路径下。如果路径是/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() 完全没有任何文档,并且可能不会直接应用,因为我不会总是有符号链接。
我必须遍历路径的每个部分,边走边解析符号链接,还是有更规范的方法?
【问题讨论】:
标签: node.js