2009-08-10 10 views
7

Piszemy program java, który przechowuje hasło w pamięci. Niestety, użytkownik może z łatwością użyć jconsole lub jmap do utworzenia pliku zrzutu sterty i otworzyć go, aby znaleźć hasło. Myślę, że jconsole łączy jvm z lokalnymi gniazdami. Chcę wiedzieć, czy istnieje sposób na wyłączenie jmx nawet dla lokalnych użytkowników? Czy istnieje sposób całkowitego wyłączenia zrzutów sterty? Ponieważ użytkownik ma dostęp do segmentu pamięci, i tak jest możliwe uzyskanie dostępu do hasła. Jednak chcę wyłączyć standardowe sposoby robienia tego, aby działanie było jak najdroższe.Wyłączanie lokalnych połączeń JMX na JVM

Odpowiedz

5

Wreszcie znalazłem rozwiązanie do wyłączania połączeń jconsole. Zapobiega to także tworzeniu przez jmap pliku zrzutu. Znalazłem rozwiązanie here. Ja też zacytować odpowiedź tutaj:

Można zapobiec narzędzi, takich jak JConsole i innych z podłączeniem przez biegł z -XX: + DisableAttachMechanism opcji. Zauważ, że ta opcja nie jest udokumentowana/obsługiwana, ale powinna być zgodna z Twoją wolą. Powiedział, że nawet z to nie ma nic, aby zatrzymać podłączenia gdb lub innych debugowanie/proc programów opartych

jednak, że jest oczywiste, że segment pamięci mogą być dostępne lokalnie. Ale czy ktoś zna narzędzie do tworzenia standardowych zrzutów pamięci z bezpośrednim dostępem do pamięci?

+1

Niekoniecznie standardowy format zrzutu pamięci, ale można użyć na przykład edytora szesnastkowego HxD (http://mh-nexus.de/en/hxd/), aby uzyskać dostęp do pamięci dowolnego procesu lokalnego (z odpowiednimi uprawnieniami) . –

+0

Nice. Pracuje dla mnie! – laher

2

Ustawianie liczyć max gra na zero wyłącza JMX

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

Jeśli trzeba jeszcze statystyk, prosty przeczytać odpowiedni hsperfdata_ plik *

Edycja: opublikowałem mój hsperf munin plugin na github.

Powiązane problemy