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 生成参数已被清理。
假设您正在构建一个基于未经验证的输入运行 shell 命令的应用程序。
将参数连接为字符串显然存在巨大的安全风险,但 args
选项也是如此吗?
文档对此没有提及任何内容。我运行一个快速测试:
var child = require("child_process");
child.spawn("touch", ["./filename", "&& touch ./hacked"]);
filename
已创建,但 hacked
未创建。这是否意味着我可以在 args
数组中插入任何内容并假设它是安全的?
我认为您遇到的问题不是它正在为您清理输入,而是您不能在参数中使用空格。看到这个 answer.
我在网上找不到任何迹象表明您的 child 生成参数已被清理。