我想隐藏正在运行的java进程的参数(密码释义)(可以从命令行看到)。
例如,当我在cmd上键入jps -m时,它会向我显示所有java进程及其参数:
运行jps -m后的输出:6120 someproject.jar -password
其中6210是pid。
我需要该密码才能运行java进程。问题是如果我的机器遭到入侵,有人可能会读取密码并可能造成进一步的损坏。
一种解决方案是将密码存储在本地文件中。但如果机器受到损害,仍然有人可以得到它。
我是如何进行的?
提前致谢。
update1:密码经过哈希处理,但仍然希望它隐藏。
答案 0 :(得分:0)
在(例如)C程序中处理此问题的方法是写入提供给main(...)
入口点方法的参数列表。欲了解更多信息,请阅读:
不幸的是,"覆盖" Java应用程序无法使用该方法。从纯Java,它根本不可能。即使使用本机代码库,也很难在内存中找到(本机)参数向量的存储位置。
(此外,还有一个小的时间窗口,在应用程序删除它们之前公开参数...)
所以你最好的办法就是以另一种方式传递秘密信息。例如,通过环境变量,具有访问限制的临时文件或标准输入传递秘密信息。