2009-12-24 5 views
2

내 앱용 플러그인 관리자를 작성했습니다. 코드 몰을 사용하여 클래스 라이브러리에 C# 코드를 컴파일하고 형식을 인스턴스화합니다. 완벽하게 작동합니다. 이제 컴파일 된 assembly.unfortunatly에 대한 사용 권한을 제한하고 싶습니다. 그렇게하는 방법을 모릅니다. 까지 나는 CompilerParameters.Evidence를 어떤 식 으로든 사용해야한다는 것을 이해하지만, 어떻게 나에게 불분명하다. 명확성을 위해 assmbly를 특정 영역으로 분류하고 싶지는 않습니다. 플러그인 관리자 생성자에서 인수로 전달되는 권한 세트로 제한하려고합니다. 또한 새로운 appdomin에 어셈블리를로드하지 않는다는 것을 언급하고 싶습니다. 나머지 응용 프로그램과 동일한 도메인에서 실행됩니다.코딩 된 컴파일 된 어셈블리 제한

감사합니다.

+0

가 정확히 일년 이상 I는 동일한 질문이 참조가된다. 운이있어서 대답을 찾았습니까? – Glenn

+0

.NET Framework 4.0에서이 작업을 수행하는 방법? CompilerParameters.Evidence는 이제 더 이상 사용되지 않습니다 .. 어떤 아이디어입니까? – user1624552

답변

1

보안을 처리하는 CodeDOM 예제는 Google에 까다로운 내용입니다. 몇 시간의 독서 후 나는 두 가지 접근법을 발견했다.

관리되는 애드 인 프레임 워크은 사용 사례 시나리오에 맞게 설계되었으므로 최상의 것으로 보입니다. Restrict plug-in assembly code access

CAS (코드 액세스 보안)도 옵션이지만 덜 인기 나가는 길에있을 것으로 보인다. 여기 [SO 소식]로부터 상승하는 예 [3]

var myEvidence = new Evidence(new object[] {SecurityZone.Internet}); 
var newDomain = AppDomain.CreateDomain("InternetDomain"); 
myDomain.Load("MyUntrustedAssembly.dll", myEvidence); 
myDomain.CreateInstanceAndUnwrap("MyUntrustedAssembly","MyUntrustedObjectType"); 

CAS가 .NET/Security: Limiting runtime-loaded assemblies from accessing certain APIs http://www.gamedev.net/community/forums/topic.asp?topic_id=418038 http://www.go4answers.com/Example/codedom-security-64586.aspx