다음을 통해 공유


TypeBuilder.IsSecuritySafeCritical 속성

정의

현재 형식이 보안 안전에 중요한 형식인지 즉, 중요한 작업을 수행할 수 있고 투명 코드로 액세스할 수 있는지를 나타내는 값을 가져옵니다.

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

속성 값

현재 형식이 보안 안전에 중요한 형식인 경우 true이고 보안에 중요한 형식이거나 투명 형식인 경우 false입니다.

예외

현재 동적 형식이 CreateType() 메서드를 호출하여 생성되지 않았습니다.

설명

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

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

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

런타임은 어셈블리에서 투명도 수준을 평가하기 시작합니다. 예를 들어 동적 어셈블리가 보안에 중요한 경우 형식에 대한 주석은 무시되고 모든 형식은 보안에 중요합니다.

기본적으로 동적 어셈블리는 내보내는 어셈블리의 투명도를 상속합니다. , AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)또는 AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) 메서드 오버로드를 AppDomain.DefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)사용하고 보안 특성을 지정하여 이 기본값을 재정의할 수 있습니다. 이렇게 하면 보안 수준을 높일 수 없습니다. 즉, 투명 코드는 보안에 중요하거나 보안이 중요한 코드를 내보낼 수 없습니다. 동적 어셈블리를 만들 때 특성을 지정해야 하거나 어셈블리가 디스크에 저장되고 다시 로드될 때까지 적용되지 않습니다.

참고

기본 상속은 런타임의 투명도 평가로 제한됩니다. 동적 어셈블리에 특성이 적용되지 않습니다. 보안 특성을 추가하려면 직접 적용해야 합니다.

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

적용 대상

추가 정보