node.js:使用userinput作为命令行参数安全吗?

时间:2018-11-30 13:23:14

标签: node.js shell express security command-line

我想使用child_process.execFile(file [,args] [,options] [,callback])(node.js)来调用主机服务器上的特定应用程序。 “文件”参数由我定义。将未经消毒的用户输入传递给'args'参数是否安全?如果没有:如何清除输入内容?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

更新:

理论上,如果您需要能够允许用户传递任何内容,则可以在封闭的环境(例如容器)中开始操作,尽管这相当复杂,并且取决于一个人想要多少破坏您的系统,被伪造的可能性很高。

相关问题