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
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?
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.
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) . –
Bello. Per me va bene! – laher