node.js:使用用户输入作为命令行参数是否安全?

标签 node.js shell express security command-line

我想使用 child_process.execFile(file[, args][, options][, callback]) (node.js) 调用主机服务器上的特定应用程序。 "file"参数是我定义的。将未经 sanitizer 的用户输入传递给“args”参数是否安全?如果不是:如何清理输入?

最佳答案

不,这绝对不安全。用户可以智能地结束命令并执行单独的命令,并且根据 Node 应用程序运行的权限级别,将能够执行大量操作。

我不确定您如何检索用户输入,但是,您应该解析输入以获取特定参数。例如,假设您想传入 arg,您应该从用户输入中获取该值并传递 child_process.execFile(file, arg, ...)

您可能还应该清理用户输入,这可以通过多种方式完成,包括使用 sanitize library 。通过对输入进行参数化,清理起来会相当简单,同时也限制了可以传入的内容。

================================================== =============================

更新:

理论上,如果您需要允许用户传递任何内容,您可以在某些封闭的环境中启动操作,例如容器,尽管这相当复杂,并且取决于一个人想要的程度破坏你的系统,很有可能被攻击。

关于node.js:使用用户输入作为命令行参数是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53558434/

相关文章:

javascript - 使用 socket.io 和 node.js 向特定客户端发送消息

linux - 用于文件名路径列表的 mkdir 命令

shell - 每组打印前N行->删除所有docker镜像,每个镜像名称的最新N个除外

node.js - 提供 firebase 功能总是说端口未打开

node.js - 使用 Express 进行外部获取请求

arrays - Nodejs/Mongoose 无法比较文档

javascript - Puppeteer 的行为与开发者控制台不同

node.js - NodeJS、Passport 和 Facebook - 为什么我无法注销

linux - BASH - 从一天中提取日期

mongodb - Mongoose 加入数据