我想使用child_process.execFile(file [,args] [,options] [,callback])(node.js)来调用主机服务器上的特定应用程序。 “文件”参数由我定义。将未经消毒的用户输入传递给'args'参数是否安全?如果没有:如何清除输入内容?
答案 0 :(得分:1)
不,这绝对是不安全的。用户可以智能地结束命令并执行单独的命令,并且根据您的节点应用程序正在运行的权限级别,用户可以执行大量操作。
我不确定您如何检索用户输入,但是,您应该为特定的参数解析输入。例如,假设您想传递arg
,则应从用户输入中获取并传递child_process.execFile(file, arg, ...)
。
您可能还应该清理用户输入,可以通过多种方式来完成,包括使用sanitize library。通过对输入进行参数设置,可以很简单地进行清理,同时还限制了可以传入的内容。
================================================ ==========================
更新:
理论上,如果您需要能够允许用户传递任何内容,则可以在封闭的环境(例如容器)中开始操作,尽管这相当复杂,并且取决于一个人想要多少破坏您的系统,被伪造的可能性很高。