DynamicMethod.IsSecurityTransparent 속성

정의

현재 동적 메서드가 현재 신뢰 수준에서 투명하므로 중요한 작업을 수행할 수 없는지 여부를 나타내는 값을 가져옵니다.

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

속성 값

true동적 메서드가 현재 신뢰 수준에서 보안 투명이면 이고, 그렇지 않으면 . false

예외

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

설명

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

보안 수준 IsSecurityCritical 보안은 안전하게 중요합니까? IsSecurityTransparent
중요 true false false
안전 중요 true true false
투명 false false true

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

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

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

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

    어셈블리 어노테이션 수준 1 투명도 수준 2 투명도
    완전 투명 투명 투명
    완전 위험 중요 중요
    혼합 투명도 투명 투명
    보안에 구애받지 않습니다. 안전 필수 중요

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

    메모

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

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

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

적용 대상

추가 정보