ABAP 프로그램을 작성하는 데있어 다음 방법론이 나에게 프로그램에 대한 '종료'로 알려져 있기 때문에 이에 따라 이름을 선택합니다. extern 인터페이스 구현의 실행 허용 : 위험 요소는 무엇입니까?
이1) 인터페이스
namespace Exits {
public interface Exit {
int exitMethod(string s); // signature serves as example only
}
}
2) 작성된 사용자의 이름을 전달하는 응용 프로그램의 사용자에게 몇 가지 방법을 제공을 정의, 닷넷, 당신을 가정 조립 ExitImplementation.dll
및 클래스 이름 (예 : myClass : exit
)을 사용하여 인터페이스 exit를 구현합니다. 예 : 명령 줄 매개 변수 또는 일부 형식으로.
당신은 그것을 실행 string assemblyName
에서 사용자 어셈블리의 이름과 string theImplementation
의 클래스 (포함 네임 스페이스)의 이름을 저장하고로드 :
Assembly assembly = Assembly.LoadFrom(assemblyName);
// assuming assembly is deployed by user into folder where application resides
Exit theExitImplementation = assembly.CreateInstance(theImplementation) as Exit;
int k = theExitImplementation.exitMethod("whatever");
(첫 번째 질문
3)
이 기술의 이름은 ABAP 세계 바깥에 있으며 그 이름은 무엇입니까? :-))내가 알고 싶은 것은 응용 프로그램에서이 작업을 실행하게하여 어떤 위험을 감수하고 있는지입니다. 사용자 코드 (용서 나에게 순진한 질문 인 경우에, 나는 여전히 .net에 익숙하다.) 출력이 일부 로그에 대한 일부 메시지 출력을 결정하는 데 필요한 일부 메시지 코드라고 가정 해 봅시다.
배포 시나리오로는 회사에서 업무를 수행하기 위해 응용 프로그램을 사용하고 해당 회사의 일부 직원이 종료 구현을 작성한다고 가정합니다. 해당 직원이 손상을 입히려한다면 어떤 위험에 처할 수 있습니까?
- 로그에 잘못된 메시지가 있습니까?
- 응용 프로그램의 클래스 인스턴스 내용?
- 응용 프로그램이 실행되고있는 PC의 리소스가 있습니까?
- 더 나빠요?
대답은 4입니다. 그렇지 않습니까? myClass는 oppurtunity가 실행되도록하므로 기본적으로 모든 응용 프로그램이 원래 응용 프로그램을 실행하는 사용자가 시작한 작업을 수행 할 수 있습니다. 이것을 방지 할 수있는 방법이 있습니까?
만약 그렇다면 : 어떤 차이가 있습니까? (있는 경우) 이탈의 서명이 고정되어 있으며 메소드의 입력을 메소드에서 변경할 수 없습니까? 의도에 의한이 메서드는 형식을 동적으로 정의 할 수 없습니다.
이 방법은 또한 의도적으로 변경할 수없는 입력 만 허용합니다. 문자열 인수가 호출자가 수정할 수있는 StringBuilder와 같은 다른 유형으로 대체되었다고 가정합니다. 이것은 위험을 증가 시키는가?
이 접근법으로 위험을 줄이기 위해보다 정교한 (표준) 기법이 있습니까? 다른 접근법이 있습니까?
ABAP 란 무엇입니까? – renatoargh
Hrmmm. ABAP은 SAP 세계의 프로그래밍 언어입니다. – Thomas
ABAP 용 태그도 있습니다 :-) – Thomas