클래스 프로젝션 및 프로젝션 클래스
메커니즘에 대한 자세한 내용은 InterSystems documentation 에서 읽을 수 있습니다. 요약하면 클래스 정의는 Projection 키워드를 사용하여 하나 이상의 프로젝션 클래스를 참조할 수 있습니다. 프로젝션 클래스는 클래스 수명 주기의 주요 지점에서 호출되는 메서드를 구현할 수 있습니다.
프로젝션 클래스는 확장
%Projection.AbstractProjection
해야 하며 일반적으로 다음 메서드 중 하나 이상을 구현합니다.CreateProjection
RemoveProjection
CreateProjection
는 클래스가 컴파일된 후에 호출됩니다. RemoveProjection
는 클래스가 다시 컴파일되기 직전이나 삭제되기 직전에 호출됩니다.이 메커니즘의 원래 용도 중 하나는 InterSystems 클래스의 Java 프로젝션을 구현하는 Java 파일을 생성하는 것이었습니다. 그 이후로 더 광범위하게 사용되고 더 정교해졌습니다. InterSystems IRIS 2021.1에서
%Projection.AbstractProjection
에서 파생된 26개의 % 클래스를 찾았습니다.InterSystems가 메커니즘을 사용하는 방법 외에도 다른 방법으로 악용되는 것을 보았습니다. 다음은 몇 가지 예입니다.
UMLExplorer 4개의 클래스가 포함된 XML 파일로 제공됩니다. 그 중 하나가
ClassExplorer.WebAppInstaller
라는 프로젝션 클래스로, 독창적으로 자체 투영합니다.Class ClassExplorer.WebAppInstaller Extends %Projection.AbstractProjection
{
Projection Reference As WebAppInstaller;
...
따라서 이 클래스가 컴파일되면
CreateProjection
메서드가 실행되어 개발자가 코딩한 모든 단계를 수행합니다. 이 경우/CacheExplorer라는 웹 응용 프로그램을 추가하지만 클래스를 컴파일하는 사람의 권한이 허용하는 모든 작업을 수행할 수 있습니다.프로젝션이 다른 방식으로 사용되는 것을 보았거나 새로운 용도를 직접 고안했다면 이 게시물에 댓글로 공유해 주세요.
이 시점에서 한 가지 더 생각합니다. 이 메커니즘은 내용을 신뢰할 수 없는 XML 파일을 가져오는 동안 컴파일하기 전에 두 번 생각해야 함을 의미합니다. 악성 프로젝션 클래스의 범위는 큽니다.
Reference
이 문제에 관하여(클래스 프로젝션 및 프로젝션 클래스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/intersystems/class-projections-and-projection-classes-1ecp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)