有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在JVM上禁用本地JMX连接

我们正在编写一个java程序,在内存中保存密码。不幸的是,用户可以很容易地使用jconsole或jmap创建一个堆转储文件并打开它来查找密码。我认为jconsole使用本地socket连接jvm。我想知道,有没有什么方法可以让本地用户禁用jmx?有没有办法完全禁用堆转储?由于用户可以访问内存段,因此仍然可以访问密码。然而,我想禁用标准方法来尽可能地降低成本


共 (2) 个答案

  1. # 1 楼答案

    最后,我找到了一个禁用jconsole连接的解决方案。它还阻止jmap创建转储文件。我找到了解决办法。我在这里也引用了答案:

    You can prevent tools such as jconsole and others from connecting by running with the -XX:+DisableAttachMechanism option. Note that this option is not documented/supported but should do what you want. That said, even with this there is nothing to stop you connect gdb or other debugging/proc based programs

    然而,很明显,内存段可以在本地访问。但是,有人知道一种可以直接访问内存的标准内存转储工具吗

  2. # 2 楼答案

    将最大连接计数设置为零会关闭JMX

    -Dsun.rmi.transport.tcp.maxConnectionThreads=0
    

    如果仍然需要统计数据,只需读取相应的hsperfdata_*文件

    编辑: 我在github上发布了我的hsperf munin plugin