2013-01-14 5 views
2

런타임 C# 코드를 어셈블리로 컴파일하고 asp.net의 메모리에 저장하는 코드를 작성했습니다. 그런 다음 컴파일 된 코드를 실행할 수 있습니다.코드에서 system.reflection 사용을 금지합니다.

런타임에 컴파일 할 코드는 사용자가 작성합니다. 항상 기본 클래스에서 상속 한 클래스입니다. 문제는 사용자가 리플렉션을 사용하여이 기본 클래스의 비공개 필드 및 메소드에 액세스 할 수 있다는 것입니다. 그래서 내 질문 : 리플렉션을 사용하지 못하게하는 방법이 있습니까?

+1

몇 가지 코드를 볼 수 있습니까? 너 뭐 해봤 니? – geedubb

+0

나는 지금 아무 것도 시도하지 않았다. 나는 약간의 조사를했고 유용한 것을 찾지 못했습니다. –

답변

3

Framework 클래스 라이브러리에는 System.Reflection API를 통해 비공개 형식 및 멤버에 대한 액세스를 제어하는 ​​ReflectionPermission 특성이 있습니다. 케이스에서이 속성을 생성 된 어셈블리에 적용 할 수 있다면 작동하는지 확인할 수 있습니다.

+0

Yiğit Yener의 요점을 강조합니다 - 사용자가 서버에서 컴파일되고 실행되는 코드를 작성하게하는 것은 위험합니다 *. 비공개 필드에 액세스하는 것에 대해 걱정하십니까? 또한'System.IO.Directory.Delete ("C : \\")'를 호출하는 것에 대해 걱정하십시오. Pre -.NET 4.0에는 코드 액세스 보안 기능이 있습니다. 4.0 이상에서는 보안 투명 코드가 있습니다. 그것에 읽기 : http://msdn.microsoft.com/en-us/library/ee191569(v=vs.100).aspx –

관련 문제