2011-03-28 5 views
0

검사를 위해 신뢰할 수없는 어셈블리를로드하는 응용 프로그램을 작성하고 있습니다 (예 : 어셈블리 전체 이름 검색). 보안상의 이유로이 어셈블리를로드 할 때 코드를 실행할 수 있도록 작성하는 방법을 생각하려고합니다. 나는 아직 방법으로 코드를 작성하지 않았지만, 누군가를 할 수 있는지 알아보기 위해 여기에 그것을 던지기를 원했다.어셈블리가로드 될 때 코드를 실행하는 방법이 있습니까?

신뢰할 수없는 앱 도메인에 이러한 어셈블리를로드하여 실제로 아무 것도하지 못하게 막을 수 있다는 것을 알고 있지만 필요하지 않은 경우 복잡성을 피하려고했습니다.

특히 Assembly.Load<LoadedAssebmly>.FullName으로 전화 할 것입니다. 어쩌면 Assembly 클래스를 사용하지 않고 어셈블리 이름을로드하는 더 좋은 방법이 있을까요?

감사합니다, 모두의 매트

답변

1

첫째, AssemblyName 클래스가있다. 어셈블리 이름을로드하지 않고 찾을 수 있습니다. 두 번째로 반사 전용 컨텍스트를 사용하는 Assembly.ReflectionOnlyLoad을 사용하여 어셈블리를로드 할 수 있습니다. 이러한 어셈블리에서 코드를 실행할 수 없습니다.

+0

딱! 이것이 내가해야 할 일이다. 나는 이것이 다니엘의 글에서 언급 된 모듈 이니셜 라이저에 취약하지 않다고 생각한다. –

+1

안됩니다. 보안 측면에서 이것이 중요한지 확인하는 것이 좋습니다. –

관련 문제