2017-04-18 1 views
2

Class.java 어떻게 자바 Class.java의 필드 민간 최종 클래스 로더 클래스 로더에 반사 접근을 제한? 스크린 샷의 문서에 표시된대로특정 필드가 리플렉션 액세스에서 필터링되는 방법은 무엇입니까?

나는 반사 액세스를 제한하기 위해 SecurityManager를 사용할 수 있다고 설명하지만 그 사용 방법은 link입니다. 자세히 설명해주십시오.

그런 다음 특정 필드에만 액세스를 제한하려고합니다.

발견 similar question 하지만이 클래스를 구현할 수 있고 이미 jdk에서 구현 된 이유에 대한 질문을 이미 알고 싶습니다. 리플렉션을 사용하여 체인을 끊을 수 있습니까?

+0

[여기] (http://stackoverflow.com/questions/14903318/hiding-my-security-key-from-java-reflection?answertab=votes#tab-top)이 질문에 대한 답변입니다. –

+0

왜이 비공개 필드를 사용 하시겠습니까? 나는 당신의 문제가 해결 될 수 있다고 확신하지만 JVM에 의해 보호받는이 필드에 접근하는 것은 아닙니다. @ Pavlo : 일부 필드는 찾을 수 없기 때문에 액세스 가능하게 만들 수없는 것 같습니다. – CoronA

답변

1

JVM은 사용자가 사용할 수없는 특별한 메커니즘으로 보호합니다. 모든 권한이 있어도 일반적으로 개인 필드에 액세스 할 수는 있지만 리플렉션을 통해 액세스 할 수는 없습니다.

필사적으로 우리가 할 수있는 최선의 방법은 반사 액세스를 방지하는 SecurityManager을 사용하는 것입니다. 더 중요한 것은 우리의 소프트웨어를 설계하여 Java에 의존하여 비밀을 유지하지 않도록하는 것입니다. 내가 분명히 불분명 이후

, 당신의 편집 대답하기 위해 (?)

는 "어떻게 내 수업이를 구현할 수있다?" 할 수 없습니다.

"왜 이것이 jdk에서 구현 되었습니까?" 리플렉션을 사용하여이를 우회 할 수는 없습니다.

"리플렉션을 사용하여 체인을 끊을 수 있습니까?" 아니요, 그게 전부입니다.

관련 문제