jbossws와 함께 사용자 이름 토큰을 사용할 때 메모리에서 암호를 지우려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/805658

문제

결제 서비스 애플리케이션에 Jboss Web Services를 사용하고 있습니다. 어느 시점에서 나는 결제 서비스 제공 업체에 원격 비누 호출을해야하며 사용자 이름 토큰으로 인증해야합니다.

Jbossws 로이 작업을 수행하는 방법을 아는 유일한 방법은 다음과 같습니다.

Map<String, Object> requestContext = ((BindingProvider)port).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, "foobar");
requestContext.put(BindingProvider.PASSWORD_PROPERTY, "changeme");

그러나 여기서 문제는 "changeme"비밀번호가 이제 문자열 객체로 메모리에 있고 가비지가 수집 될 때를 제어 할 수 없다는 것입니다. 이 시점에서 공격자가 메모리를 덤프하면 자격 증명을 찾을 수 있습니다.

비밀번호가 메모리에 남아있는 시간을 제어 할 수있는 JBossws와 안전한 비누 호출을하는 또 다른 방법이 있습니까?

도움이 되었습니까?

해결책

나는 방법이 없다고 확신합니다. 줄은 Java에서는 불변이므로 문자열을 다시 쓸 수 없습니다. 바이트 배열을 사용하여 암호를 저장할 수 있으며 바이트 배열을 다시 작성할 수 있습니다. 그러나 어쨌든 어느 시점에서 문자열로 변환해야 할 것입니다 ...

다른 한편으로, 공격자가 메모리 덤프를 얻기 위해 컴퓨터에 접근 할 수있는 경우, 어쨌든 나사로 고정되는 것보다. 공격자가 이미 많은 액세스 권한을 가지고 있다면, 그가 원하는대로 거의 할 수 있습니다 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top