我想使用child_process.excFile(file[,args][,options][,callback]((node.js(来调用主机服务器上的特定应用程序。"file"参数由我定义。将未初始化的用户输入传递给"args"参数安全吗?如果没有:如何对输入进行消毒?
不,它绝对不安全。用户可以智能地结束命令并执行一个单独的命令,根据节点应用程序运行的权限级别,用户可以做很多事情。
我不确定您是如何检索用户输入的,但是,您应该为特定的参数解析输入。例如,假设您想要传入arg
,那么您应该从用户输入中获取该信息并传入child_process.execFile(file, arg, ...)
。
您可能还应该对用户输入进行消毒,这可以通过各种方式进行,包括使用消毒库。通过对输入进行参数化,在限制传入内容的同时进行净化将相当简单
=================================================
更新:
理论上,如果你需要允许用户传递任何东西,你可以在一些封闭的环境中开始操作,比如在一个容器中,尽管这相当复杂,而且根据一个人想破坏你的系统的程度,很有可能会被密码破解。