2009-08-10 6 views
7

Stiamo scrivendo un programma java che mantiene una password in memoria. Sfortunatamente, l'utente può facilmente utilizzare jconsole o jmap per creare un file di scarico dell'heap e aprirlo per trovare la password. Penso che jconsole connetta jvm usando le prese locali. Voglio sapere, c'è un modo per disabilitare jmx anche per gli utenti locali? C'è un modo per disabilitare totalmente i dump dell'heap? Poiché l'utente ha accesso al segmento di memoria, è comunque possibile accedere alla password. Tuttavia, voglio disabilitare gli standard per farlo per rendere l'azione più costosa possibile.Disabilitazione di connessioni JMX locali su JVM

risposta

5

Infine, ho trovato una soluzione per disabilitare le connessioni jconsole. Inoltre impedisce a jmap di creare un file di dump. Ho trovato la soluzione here. Ho anche cito la risposta qui:

È possibile evitare che strumenti come jconsole e altri di connettersi da esecuzione con la XX: opzione + DisableAttachMechanism. Nota che questa opzione non è documentata/supportata ma dovrebbe fare quello che vuoi. Detto questo, anche con questo non c'è nulla che impedisca di collegare gdb o altri programmi basati debug/proc

Tuttavia, questo è ovvio il segmento di memoria è stato possibile accedere a livello locale. Ma qualcuno conosce uno strumento per creare dump di memoria standard con accesso diretto alla memoria?

+1

Non necessariamente un formato di dump di memoria standard, ma è possibile utilizzare ad esempio l'editor HxD hex (http://mh-nexus.de/en/hxd/) per accedere alla memoria di qualsiasi processo locale (con privilegi sufficienti) . –

+0

Bello. Per me va bene! – laher

2

Impostazione contare la connessione massima a zero si spegne JMX

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

Se hai ancora bisogno di statistiche, semplice leggere il file * hsperfdata_ corrispondente

Edit: ho pubblicato il mio hsperf munin plugin su github.