javascript - 如何检查文件名字符串不是文件路径

标签 javascript linux node.js security filesystems

我正在 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/

相关文章:

javascript - React - 防止生命周期组件渲染相同的数据两次 : WillReceiveProps & componentDidMount

javascript - data.map 不是一个函数 React

javascript - 在 node.js 中的 for 循环后完成多个 writeFile 函数时解决 promise

node.js - 无法使用 typescript 导入 Node 类型的模块

c - 添加两个宏并在预处理阶段转换为字符串

node.js - 带有 Docker 的 Nodemailer

javascript - 检查所有 Ajax 请求何时完成 - 纯 JavaScript

javascript - HTML5 Canvas : only outer shadow

linux - Linux 到 OpenSolaris 的迁移有多痛苦?

php - 如何正确访问de BIND DNS写入一些文件?