2

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

我收到文件名作为纯字符串,所以它可以被黑客入侵。然后我像这样连接文件名字符串和路径字符串:

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

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

我目前的幼稚解决方案是阻止具有..子字符串的文件名。我不在乎是否有人的文件名带有两个点。

当然,在安全方面,我不得不向听众征求意见:有什么问题吗?

4

2 回答 2

2

我会用path.resolve这个: http ://nodejs.org/api/path.html

尝试 filepath = path.resolve(filepath)

接着

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

于 2013-10-25T12:38:29.760 回答
0
if (path.basename(filepath) != filename) {
  // reject that sukka
}
于 2013-10-25T13:31:39.673 回答