2017-11-03 14 views
0

나는 리플렉션을 사용하여 런타임에 클래스를로드하지만 음향 첩자 규칙은 을 취약성 공격으로 지정합니다. ByteBuddy를 사용하려고 생각하고 있는데, 이것으로 bytebuddy 라이브러리를 사용할 수 있습니까? 이 방법이 과부하되는 것을자바에서 동적 클래스 로딩을위한 대안은 무엇입니까?

Class<?> cls = Class.forName(className); 

참고 :

ClassLoader classLoader = MyClass.class.getClassLoader(); 
Class<?> classsName = classLoader.loadClass(className); 
+2

위 예제에는 동적 클래스 로딩 만 반영되어 있습니다. 그리고 두 번째 줄은 이해가되지 않습니다 ('className = loadClass (className)'). -하지만 아마도 Sonar가 안전하지 않은 소스에서 className을 얻고 있다고 불평하고 있습니다. Bytebuddy는 도움이되지 않습니다 - 클래스를 동적으로로드해야합니다. 로드 된 클래스의 –

+0

에서 public에 접근 할 수있는 메소드 하나를 만들고 싶습니다. – Tirumalesh

+0

methodCall.setAccessible (true); methodCall.invoke (getmethod, "text"); – Tirumalesh

답변

0

나는 수중 음파 탐지기의 경보를 방지 할 수 있지만,이 요구 될 수있는 모든 클래스의 초기화를 해주고 진행하기 때문에 차라리 Class.forName(String)를 사용하려는 경우 확실하지 않다 따라서 클래스 로더를 지정하거나 클래스를 초기화해야하는지 여부를 지정할 수 있습니다.