禁用JVM的本地JMX连接(Disabling Local JMX Connections on J

2019-07-31 19:57发布

我们写这使密码在内存中的Java程序。 不幸的是,用户可以方便地使用JConsole的或JMAP创建一个堆转储文件并打开它,找到密码。 我认为JConsole的使用本地连接的插座JVM。 我想知道,有没有什么办法来禁用JMX即使是本地用户? 有没有什么办法来完全禁用堆转储? 当用户访问该存储器段,这是可能的反正访问密码。 不过,我想这样做,使动作尽可能昂贵的禁用的标准方式。

Answer 1:

最后,我发现禁用JConsole的连接解决方​​案。 它还可以防止JMAP创建转储文件。 我找到了解决办法在这里 。 这里我也引用了答案:

您可以防止通过与-XX运行连接工具如JConsole的和其他人:+ DisableAttachMechanism选项。 注意,此选项未记录/支持,但应该做你想要什么。 这就是说,即使有这样的没有什么可以阻止你连接的gdb或其它调试的/ proc基础的方案

然而,这是显而易见的内存段可以在本地访问。 但是,有没有人知道一个工具,使标准的内存转储直接访问内存?



Answer 2:

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

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

如果您还需要统计,简单的读取相应的hsperfdata_ *文件

编辑:我发表我的hsperf穆宁插件在github上。



文章来源: Disabling Local JMX Connections on JVM