다음을 통해 공유


DynamicMethod.IsSecurityCritical 속성

정의

현재 동적 메서드가 보안에 중요한 형식이거나 보안 안전에 중요한 형식이어서 중요한 작업을 수행할 수 있는지 여부를 나타내는 값을 가져옵니다.

public:
 virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean

속성 값

현재 동적 메서드가 보안에 중요한 형식이거나 보안 안전에 중요한 형식이면 true이고, 투명 형식이면 false입니다.

예외

동적 메서드에 메서드 본문이 없습니다.

설명

, IsSecuritySafeCriticalIsSecurityTransparent 속성은 IsSecurityCriticalCLR(공용 언어 런타임)에 의해 결정된 동적 메서드의 투명도 수준을 보고합니다. 이러한 속성의 조합은 다음 표에 나와 있습니다.

보안 수준 IsSecurityCritical IsSecuritySafeCritical IsSecurityTransparent
중요 true false false
안전 위험 true true false
투명 false false true

이러한 속성을 사용하는 것이 어셈블리 및 해당 형식의 보안 주석을 검사하고 현재 신뢰 수준을 확인한 다음 런타임 규칙을 복제하는 것보다 훨씬 더 간단합니다.

동적 메서드의 투명도는 연결된 모듈에 따라 달라집니다. 동적 메서드가 모듈이 아닌 형식과 연결된 경우 해당 투명도는 형식이 포함된 모듈에 따라 달라집니다. 동적 메서드에는 보안 주석이 없으므로 연결된 모듈에 대한 기본 투명도가 할당됩니다.

  • 익명으로 호스트되는 동적 메서드는 포함된 시스템 제공 모듈이 투명하기 때문에 항상 투명합니다.

  • 신뢰할 수 있는 어셈블리(즉, 전역 어셈블리 캐시에 설치된 강력한 이름의 어셈블리)와 연결된 동적 메서드의 투명도는 다음 표에 설명되어 있습니다.

    어셈블리 주석 수준 1 투명도 수준 2 투명도
    완전 투명 투명 투명
    완전히 중요 위험 위험
    혼합 투명도 투명 투명
    보안에 구애받지 않습니다. 안전에 중요 위험

    예를 들어 동적 메서드를 수준 2 혼합 투명도가 있는 mscorlib.dll 형식과 연결하는 경우 동적 메서드는 투명하며 중요한 코드를 실행할 수 없습니다. 투명도 수준에 대한 자세한 내용은 보안 투명 코드, 수준 1보안 투명 코드 수준 2를 참조하세요.

    참고

    System.dll 같이 보안에 구애받지 않는 신뢰할 수 있는 수준 1 어셈블리의 모듈과 동적 메서드를 연결해도 신뢰 상승이 허용되지 않습니다. 동적 메서드를 호출하는 코드의 권한 부여 집합에 System.dll 권한 부여 집합(즉, 완전 신뢰) SecurityException 이 포함되지 않은 경우 동적 메서드가 호출되면 이 throw됩니다.

  • 부분적으로 신뢰할 수 있는 어셈블리와 연결된 동적 메서드의 투명도는 어셈블리가 로드되는 방식에 따라 달라집니다. 어셈블리 (예를 들어 샌드박스 애플리케이션 도메인)으로 부분 신뢰를 사용 하 여 로드 된 경우 런타임은 어셈블리의 보안 주석을 무시 합니다. 어셈블리와 동적 메서드를 포함한 모든 형식 및 멤버는 투명하게 처리됩니다. 런타임 (예를 들어, 데스크톱 애플리케이션의 기본 애플리케이션 도메인)에 완전 신뢰 여 부분 신뢰 어셈블리를 로드 하는 경우에 보안 주석에 주의 지불 합니다. 이 경우 런타임은 어셈블리의 주석에 따라 동적 메서드에 메서드의 기본 투명도를 할당합니다.

리플렉션 내보내기 및 투명성에 대한 자세한 내용은 리플렉션 내보내기의 보안 문제를 참조하세요. 투명성에 대한 자세한 내용은 보안 변경을 참조하세요.

적용 대상

추가 정보