如何解决安全问题:NodeJS 生成是否记录在任何地方?
如果您在终端中运行命令,请说
rsync -avuP [SourcPath] [DestPath]
该命令将被登录,例如 .bash_history、.zsh_history、.bash_sessions 等
所以,如果你使用像 sshpass
说sshpass -P password -p MySecetPassword [Some command requiring std input]
,它也会被记录。
但是当您使用 Node JS 生成进程时执行等效操作时会发生什么?
passw = functionThatRetrievesPasswordSecurely();
terminalCmd = "sshpass";
terminalArgs = ["-P,"password","-p",passw,"command","requiring","a","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 是否记录在任何地方?
如果有,在哪里?
如果不是,这是一种使用 opf sshpass
的安全方式吗?
解决方法
exec 没有节点特定的历史文件,除非您通过记录参数创建了一个。可以有较低级别的操作系统日志记录来捕获此类数据,例如审核日志。
在命令行上传递密码仍然被认为是最不安全的方式。
尝试使用 -f
传递文件或 -d
作为文件描述符(或 ssh 密钥应始终是调用的第一个端口)
man page 解释了...
-p 选项应该被认为是所有 sshpass 选项中最不安全的。所有系统用户都可以使用简单的“ps”命令在命令行中查看密码。 Sshpass 极少尝试隐藏密码,但这种尝试注定会造成竞争条件,而没有真正解决问题。鼓励 sshpass 用户使用其他密码传递技术之一,它们都更安全。
特别鼓励编写旨在以编程方式传达密码的程序的人使用匿名管道,并使用 -d 选项将管道的读取端传递给 sshpass。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。