我需要一种方法来验证文件是否在特定路径下。如果路径是/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也有fs.realpath()
,所以它的工作方式应该与PHP中的相同。