2009-08-10 3 views
7

우리는 암호를 메모리에 유지하는 Java 프로그램을 작성하고 있습니다. 불행하게도, 사용자는 jconsole이나 jmap을 사용하여 힙 덤프 파일을 생성하고 그것을 열어서 패스워드를 쉽게 찾을 수있다. jconsole 로컬 소켓을 사용하여 jvm 연결합니다 생각합니다. 내가 알고 싶은 건, 로컬 사용자도 jmx를 사용하지 못하게 할 방법이 있습니까? 힙 덤프를 완전히 비활성화하는 방법이 있습니까? 사용자가 메모리 세그먼트에 액세스 할 수 있으므로 어쨌든 암호에 액세스 할 수 있습니다. 그러나 가능한 한 비싸게 행동을하기 위해 표준 방법을 사용하지 않으려합니다.JVM에서 로컬 JMX 연결 사용 안 함

답변

5

마지막으로, jconsole 연결을 비활성화하는 해결책을 찾았습니다. 또한 jmap이 덤프 파일을 작성하지 못하게합니다. 솔루션 here을 찾았습니다. 또한 여기에 답을 인용 :

당신은 으로 연결하는 등 jconsole를 같은 도구 등을 방지 할 수 -XX 실행 : + DisableAttachMechanism 옵션을 선택합니다. 이 옵션은 이 문서화되거나 지원되지 않지만 원하는 것은 이어야합니다. 즉,이 당신이 GDB 또는 다른 디버깅/PROC 기반 프로그램 그러나

를 연결 중지 아무것도 없어도 로했다, 그 메모리 세그먼트가 로컬로 액세스 할 수 분명하다. 하지만 누구나 메모리에 직접 액세스하여 표준 메모리 덤프를 만드는 도구를 알고 있습니까? 당신은 아직 통계가 필요한 경우 최대 연결 개수를 0으로 설정

+1

표준 메모리 덤프 형식 일 필요는 없지만 HxD 16 진 편집기 (http://mh-nexus.de/en/hxd/)를 사용하여 충분한 권한이있는 로컬 프로세스의 메모리에 액세스 할 수 있습니다. . –

+0

니스. 나를 위해 일한다! – laher

2

JMX

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

을 종료, 간단한 해당 hsperfdata_ * 파일을

편집을 읽어 을 나는 github에 내 hsperf munin plugin을 발표했다.