我想从正在运行的Java进程中隐藏参数(密码解释)(可以从命令行看到)。
例如,当我在cmd上键入jps -m时,它将向我显示所有Java进程及其参数:
运行jps -m后的输出:6120 someproject.jar -password
其中6210是pid。
我需要该密码才能运行Java进程。问题是,如果我的计算机受到威胁,则有人可以读取密码并造成进一步的损害。
一种解决方案是将密码存储在本地文件中。但是如果机器受到威胁,仍然有人可以得到它。
有什么想法我该如何进行吗?
提前致谢。
更新1:密码已散列,但我仍然希望将其隐藏。
在(例如)C程序中处理此问题的方式将是覆盖提供给main(...)
入口点方法的参数列表。有关更多信息,请阅读以下内容:
不幸的是,“覆盖”方法不适用于Java应用程序。从纯Java来看,这是不可能的。即使使用本机代码库,也将很难找到(本机)自变量向量在内存中的存储位置。
(此外,在应用程序删除它们之前,还有一个很小的时间窗口,其中显示了参数...)
因此,您最好的选择是以另一种方式传递机密信息。例如,通过环境变量,具有访问限制的临时文件或通过标准输入来传递机密信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句