Node.js 在后端安全运行bash脚本?

Node.js 在后端安全运行bash脚本?,node.js,shell,security,command-line,Node.js,Shell,Security,Command Line,嗨,我对网络安全非常陌生,我担心可能的shell/命令注入风险。我想知道只在nodejs后端运行命令行脚本并让web主机运行是否安全 从我的理解,这将是安全的运行,因为后端无法从网站及其前端访问 从我的理解,这将是安全的运行,因为后端无法从网站及其前端访问 这基本上是正确的,但我要将其改写为: 从web服务器运行shell脚本是安全的,只要传递给shell脚本的参数是硬编码的或服务器生成的值 当您获取来自web用户的字符串并将其作为参数传递给exec调用时,就会发生Shell注入。可以安全地执行

嗨,我对网络安全非常陌生,我担心可能的shell/命令注入风险。我想知道只在nodejs后端运行命令行脚本并让web主机运行是否安全

从我的理解,这将是安全的运行,因为后端无法从网站及其前端访问

从我的理解,这将是安全的运行,因为后端无法从网站及其前端访问

这基本上是正确的,但我要将其改写为:

从web服务器运行shell脚本是安全的,只要传递给shell脚本的参数是硬编码的或服务器生成的值


当您获取来自web用户的字符串并将其作为参数传递给exec调用时,就会发生Shell注入。可以安全地执行此操作,但您需要仔细清理或转义输入以使其在命令行中安全,但这有点棘手,而且很难正确执行,因为您需要清理/转义的“危险字符”列表在bash、zsh和powershell等中有所不同。

感谢您的回复!只是想澄清一下,如果我的前端没有任何用户输入最终出现在shell脚本中,那么我是完全安全的?是的,我会这么说,因为服务器之外的用户无法让该脚本做任何意外的事情(请参见脚注1)。脚注1:我只是互联网上的一个随机人,没有检查过你的代码。我不承担法律责任,如果它不是“完全安全的”。再次感谢,当然你不负责我的代码!最后一个问题,我的shell脚本中的登录凭据是否安全且用户不可见?@Tris这也可以通过web应用程序泄漏给web用户。然而,在shell脚本中放置凭据往往是不允许的,因为很容易意外地将该文件签入git,或者有人通过电子邮件发送源代码,或者让它“走开”。更好的做法是阅读来自环境变量的creds,并让管理员将它们放在那里。