我正在 node js 上编写服务器应用程序。操作系统是Linux。
我收到的文件名是一个纯字符串,所以它可以被破解。然后我像这样连接文件名字符串和路径字符串:
filepath = '/home/www/upload/' + filename;
我想使用我的应用程序逻辑,而不是 Linux,保护上传脚本不写入上传文件夹 [或其子文件夹:可选] 以外的任何地方。
我目前天真的解决方案是阻止具有 ..
子字符串的文件名。我不在乎是否有人有带两个点的文件名。
当然,说到安全,我不得不向观众征求意见:能出什么问题吗?
最佳答案
我会为此使用 path.resolve
:http://nodejs.org/api/path.html
尝试
filepath = path.resolve(filepath)
然后
goodPath = filepath.startsWith('/your/allowed/upload/dir');
关于javascript - 如何检查文件名字符串不是文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589268/