【问题标题】:Does the NodeJS's child process args array sanitize arguments?NodeJS 的子进程 args 数组是否清理参数?
【发布时间】:2015-10-28 07:19:48
【问题描述】:

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

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

文档没有提到任何关于此的内容。我进行了快速测试:

var child = require("child_process");

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

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

【问题讨论】:

    标签: node.js security sanitization child-process


    【解决方案1】:

    我认为你看到的问题不是它正在为你清理你的输入,我认为你不能在你的论点中使用空格。看到这个answer

    我在网上找不到任何迹象表明您的孩子产生的论点已被清除。

    【讨论】:

    • 确实如此。将第三行的参数列表更改为["./filename", "&&", "touch", "./hacked"] 会出现hacked。给自己一个公认的答案。
    • 嗯,我可能在这方面过激了 - 使用更新的参数列表运行也会创建文件 &&touch - 所以出现 hacked 是由于最初的 @987654327 @...
    • 我不确定你是否看到了,但你仍然可以使用空格,你只需要先将它们转义。
    猜你喜欢
    • 2023-03-11
    • 2015-07-07
    • 2015-10-07
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 2017-01-15
    相关资源
    最近更新 更多