NodeJS 的子进程 args 数组是否清理参数?

Does the NodeJS's child process args array sanitize arguments?

假设您正在构建一个基于未经验证的输入运行 shell 命令的应用程序。

将参数连接为字符串显然存在巨大的安全风险,但 args 选项也是如此吗?

文档对此没有提及任何内容。我运行一个快速测试:

var child = require("child_process");

child.spawn("touch", ["./filename", "&& touch ./hacked"]);

filename 已创建,但 hacked 未创建。这是否意味着我可以在 args 数组中插入任何内容并假设它是安全的?

我认为您遇到的问题不是它正在为您清理输入,而是您不能在参数中使用空格。看到这个 answer.

我在网上找不到任何迹象表明您的 child 生成参数已被清理。