如何检查文件名string不是一个文件path

我在节点js上编写一个服务器应用程序。 操作系统是Linux。

我收到的文件名为一个纯string,所以可以被黑客入侵。 然后我连接文件名string和pathstring是这样的:

filepath = '/home/www/upload/' + filename; 

我想保护一个上传脚本,除了上传文件夹[或者它的子文件夹:可选],使用我的应用程序逻辑,而不是Linux写入任何地方。

我目前天真的解决scheme是阻止有..子string的文件名。 我不在乎是否有人有两个点的文件名。

当然,在安全方面,我必须向观众征求意见:任何事情都可能出错?

我会使用path.resolve这个: http : path.resolve

尝试filepath = path.resolve(filepath)

接着

goodPath = filepath.startsWith('/your/allowed/upload/dir');

 if (path.basename(filepath) != filename) { // reject that sukka }