使用execFile对Bash脚本有多安全?

时间:2013-03-01 22:41:20

标签: bash node.js child-process

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

我担心用户可以在本地运行命令(一个rm / -rf恐怖场景会浮现在脑海中)。

使用execFile对Bash脚本有多安全?确保我传递给execFile的标志的任何提示都由托管服务器的unix框进行转义?

修改

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

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

2 个答案:

答案 0 :(得分:1)

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

让用户传递命令并不是一个好主意,因为你似乎暗示了你的问题。

您可以考虑使用chroot在沙箱中运行脚本,并限制命令以及可用文件系统上的内容,但这可能会使得complet匆忙。

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

答案 1 :(得分:1)

只要用户没有指定命令名称,使用child_process.execFile本身就是完全安全的。

它不会在shell中运行命令(如child_process.exec那样),因此不需要转义任何内容。