我想使用child_process.execFile(文件,参数,回调) (node.js)来调用主机服务器上的特定应用程序。“file”参数是由我定义的。将未清理的用户输入传递给'args‘参数安全吗?如果不是:我如何清理输入?
发布于 2018-11-30 21:37:25
不,这绝对是不安全的。用户可以智能地结束命令并执行单独的命令,并且根据您的节点应用程序正在运行的权限级别,将能够执行大量操作。
我不确定您如何检索用户输入,但是,您应该为特定的参数解析输入。例如,假设你想传入arg,你应该从用户输入中获取并传递child_process.execFile(file, arg, ...)。
您可能还应该清理用户输入,这可以通过各种方式完成,包括使用sanitize library。通过对输入进行参数化,可以非常直接地进行清理,同时还可以限制可以传入的内容。
===========================================================================
更新:
从理论上讲,如果你需要允许用户传递任何东西,你可以在一些封闭的环境中开始操作,比如一个容器,尽管这相当复杂,并且根据一个人想要在你的系统中弄出多少东西,有相当高的机会被the。
https://stackoverflow.com/questions/53558434
复制相似问题