AOP를 통해 확장 및/또는 수정하려는 클래스가 포함 된 공급 업체 제공 Jar가 있습니다. 기본 Sun JVM 보안 모델은 서명되지 않은 코드 또는 다른 사람이 서명 한 코드에서 서명 된 jar의 클래스를 확장하는 코드를 허용하지 않습니다. jar 파일에서 서명을 쉽게 제거 할 수 있지만 Jar 서명 보안 조치를 무시하도록 JVM을 구성하는 것이 좋습니다. 이 작업을 수행 할 수 있습니까? 우리는 매우 통제 된 환경에있다. 그래서 우리는 공급 업체가 제공하는 병에 삽입되는 악의적 인 코드에 상대적으로 관심이 없다.JVM에서 Jar 서명을 무시하는 방법
2
A
답변
2
이것이 귀하의 경우에는 효과가 있을지 모르겠지만, 그렇지 않을 수도 있습니다. URLClassLoader를 기반으로하지 않고 클래스 로더를 직접 작성하여 Classloader를 확장하고 자신 만의 방식으로 클래스를 해결할 수 있습니다.
이 클래스 로더를 사용하여 클래스를로드하고 AOP 마법을 적용하면 제대로 작동한다고 말할 수 있습니다.
플러그인을 기반으로 프레임 워크를 구현 한 것이고 모든 코드 (라이브러리/플러그인)에 서명하지 않고 부팅 라이브러리 (응용 프로그램을로드하는 라이브러리)에 서명하고 싶지 않았습니다. 물론 기본 보안 제한 조건을 무시하기 때문에 클래스 로더에서 실행하는 코드를 신뢰할 수 있어야합니다.
내가 고려하지 않은 좋은 아이디어. 우리에게 보안을 끄는 이점은 본질적으로 정치적입니다. 항아리에는 공급 업체가 제공 한 체크섬과 동일한 체크섬이있는 경우 "귀하가 뭔가를 변경 했으므로 귀하의 잘못입니다"라는 변명은 쉽게 지원 문제가 발생합니다. 대체 클래스 로더는 이스케이프 시도에 대해 동일한 사료가 될 수 있습니다. – ShabbyDoo
확장을 위해 설계되지 않은 클래스를 확장하려는 경우 몇 가지 문제가 발생할 수 있으며 지원 요청을 거부 할 수 있습니다. 그러나 현재 수행중인 작업이 다른 구현을 제공하는 것과 같습니다. 일부 개인 수업. –
"... 확장 할 수 있도록 설계되지 않았습니다 ..." "귀하의 요구에 맞지 않는 개인 코드"와 더 비슷합니다. 어쨌든, 최선의 방법은 자신의 구현을 제공 할 수있는 깨끗한 방법을 제공하도록 요청하는 것입니다. 특정 부분 (라이브러리가 무엇인지는 모르지만 일반적으로 다중 구현이 가능해야 함) –