安全问题:NodeJS派生是否记录在任何地方



如果在终端中运行命令,请说

rsync -avuP [SourcPath] [DestPath]

该命令将被登录,例如.bash_history、.zsh_history和.bash_sessions等。

因此,如果你使用像sshpass这样臭名昭著的不安全的东西

例如sshpass -P password -p MySecetPassword [Some command requiring std input]

但是,当您在使用NodeJS生成进程时执行等效操作时,会发生什么呢?

passw = functionThatRetrievesPasswordSecurely();
terminalCmd = "sshpass";
terminalArgs = ["-P, "password", "-p", passw, "command", "requiring", "a", "password", "entry"];
spawn = require("child_process").spawn(terminalCmd, terminalArgs);
spawn.stdout.on("data", data => {console.log("stdout, no details"});
spawn.stderr.on("data", data => {console.log("stderr, no details"});
spawn.on("close", data => {console.log("Process complete, no details"});

terminalCmd或terminalArgs是否记录在任何位置?

如果是,在哪里?

如果不是,这是使用opfsshpass的安全方式吗?

除非您通过记录参数创建了一个特定于节点的exec历史文件,否则没有该文件。可以有较低级别的操作系统日志记录来捕获此类数据,如审计日志。

在命令行上传递密码仍然被认为是最不安全的方式。尝试-f传递文件,或者尝试-d传递文件描述符(或者ssh密钥应该始终是第一个调用端口(

手册页解释。。。

-p选项应该被认为是sshpass所有选项中最不安全的。所有系统用户都可以在命令行中通过简单的";ps";命令Sshpass对隐藏密码的尝试微乎其微,但这种尝试注定会在没有实际解决问题的情况下创造比赛条件。鼓励sshpass的用户使用其他更安全的密码传递技术。

特别是,鼓励编写程序的人使用匿名管道,并使用-d选项将管道的读取端传递给sshpass。

相关内容

  • 没有找到相关文章