在JVM上禁用本地JMX连接

时间:2009-08-10 13:57:16

标签: java memory heap dump jconsole

我们正在编写一个将密码保存在内存中的java程序。不幸的是,用户可以轻松地使用jconsole或jmap创建堆转储文件并打开它以查找密码。我认为jconsole使用本地套接字连接jvm。我想知道,有没有办法甚至为本地用户禁用jmx?有没有办法完全禁用堆转储?由于用户可以访问内存段,因此无论如何都可以访问密码。但是,我想禁用标准的方法来使行动尽可能昂贵。

2 个答案:

答案 0 :(得分:5)

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

  

你可以防止诸如此类的工具   jconsole和其他人从连接   与...一起跑   -XX:+ DisableAttachMechanism选项。请注意,此选项不是   记录/支持,但应该做   你想要什么。即便如此   这没有什么可以阻止你   连接gdb或其他调试/ proc   基于程序

但是,很明显可以在本地访问内存段。但是,是否有人知道使用直接访问内存进行标准内存转储的工具?

答案 1 :(得分:2)

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

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

如果您仍需要统计数据,请阅读相应的hsperfdata_ *文件

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