【发布时间】:2020-12-05 23:04:39
【问题描述】:
客户端应该只看到服务器上的目录及其内容 (FS_ROOT)。
并且服务器应该将从客户端接收到的路径转换为存在的真实路径并执行客户端请求的文件操作:
我创建了这两个函数来处理这个问题,我想问一下它们是否足够安全。我的意思是客户端应该没有办法欺骗服务器在FS_ROOT之外做一些事情@
function fromVirtualPath(virtPath){
if(virtPath === '/' || virtPath === '.')
return FS_ROOT;
virtPath = virtPath.trim();
if(virtPath[0] === '/')
virtPath = virtPath.substr(1);
const absPath = path.resolve(FS_ROOT, virtPath);
if(absPath.indexOf(FS_ROOT) !== 0)
throw new Error('Outside root dir - no permissions!');
return absPath;
}
function toVirtualPath(absPath){
return '/' + path.relative(FS_ROOT, absPath);
}
真实路径示例:/www/site.com/public_html/yo
客户应该看到:/yo
【问题讨论】:
标签: javascript node.js security path