Java 如何查看使用Runtime.getRuntime().exec执行的curl命令的历史记录?
我们可以查看bash命令的历史记录。它通常存储在Java 如何查看使用Runtime.getRuntime().exec执行的curl命令的历史记录?,java,Java,我们可以查看bash命令的历史记录。它通常存储在~/.bash\u history中。出于同样的原因,不建议将curl请求与证书和密码一起发送。 但是当我在javaRuntime.getRuntime().exec(command)中使用运行时类执行相同的curl命令时我在bash历史记录中没有看到这一点 这是有意义的,因为这是在运行时对象下完成的,而不是从终端执行的。那么,当使用运行时类从Java中完成时,我在哪里可以获得curl的历史记录呢 另外,使用运行时类而不是在信任库中实际存储证书并使
~/.bash\u history
中。出于同样的原因,不建议将curl请求与证书和密码一起发送。但是当我在java
Runtime.getRuntime().exec(command)中使用运行时类执行相同的curl命令时代码>我在bash历史记录中没有看到这一点
这是有意义的,因为这是在运行时对象下完成的,而不是从终端执行的。那么,当使用运行时类从Java中完成时,我在哪里可以获得curl
的历史记录呢
另外,使用运行时类而不是在信任库中实际存储证书并使用Https相关的Java类是否安全
注意:证书将安全地保存在Jenkins
如何查看使用Runtime.getRuntime().exec执行的curl命令的历史记录
你没有用bash运行它,所以,不,它不在bash历史中。您的问题的答案取决于操作系统(从这个意义上说,“linux”不够详细。什么类型?),但是,例如,只要命令正在运行,ps auxww
可能会显示它,完整的命令行包括参数。只要它在运行,表示/proc
虚拟文件系统中进程状态的目录肯定会让您看到调用它时使用的参数
另外,使用运行时类而不是在信任库中实际存储证书并使用Https相关的Java类是否安全
这不是安全工作的方式。它是灰色的,不是黑白的。但是,为此启动子流程肯定比使用java本身要暗得多(安全性要低得多):只要它在运行,就可以看到子流程参数。您调用的任何命令的版本都不太可控(你要散列可执行文件吗?你怎么知道可执行文件没有在你身上被更改?如果你知道谁管理这个盒子并信任他们,这当然是完全好的,但这又回到了灰色的东西:如果那部分不重要,那么这部分问题就少了(见鬼,如果你是唯一一个使用ssh登录到此框的人,并且只运行受信任的软件,那么你可以在整个文件系统中以全局可读性在50个文件中写入密码,这并不重要——但没有人会记录在案,只是笼统地声明这是“安全的”!).我同意这一点。我们使用的是云企业Jenkins,因此,如果有任何安全漏洞,代码将是最后一部分进行审问。