0

我有一个 node.js 应用程序,它使用 child_process.execFile 命令运行命令行实用程序。

我担心用户可能会在本地运行命令(rm / -rf想到一个恐怖的场景)。

将 execFile 用于 Bash 脚本的安全性如何?确保我传递给 execFile 的标志被托管服务器的 unix 框转义的任何提示?

编辑

更准确地说,我更想知道发送到文件的参数是否可以解释为命令并执行。

另一个问题是 bash 脚本本身,这在技术上超出了这个问题的范围。

4

2 回答 2

1

child_process.execFile将使用节点进程的用户 ID 执行命令,因此它可以执行用户可以执行的任何操作,包括删除所有服务器文件。

正如您的问题所暗示的那样,让用户传递命令并不是一个好主意。

您可以考虑通过使用在沙箱中运行脚本chroot,并限制命令和驻留在可用文件系统上的内容,但这可能会很快完成。

您传递的命令将通过某种风格直接执行exec,因此除非您尝试执行的是脚本,否则不需要以任何方式对其进行转义。

于 2013-03-01T22:46:15.970 回答
1

child_process.execFile只要用户不指定命令名称,单独使用是完全安全的。

它不会在 shell 中运行命令(就像child_process.exec那样),所以不需要转义任何东西。

于 2013-03-01T23:11:28.567 回答