다음을 통해 공유


보안 투명 어셈블리에는 보안 중요 코드가 포함될 수 없습니다.

업데이트: 2007년 11월

TypeName

SecurityTransparentAssembliesShouldNotContainSecurityCriticalCode

CheckId

CA2127

범주

Microsoft.Security

변경 수준

주요 변경

원인

100% 투명 어셈블리에서는 중요 코드가 나타날 수 없습니다.

규칙 설명

이 규칙은 형식, 필드 및 메서드 수준에서 SecurityCritical 주석에 대한 100% 투명 어셈블리를 분석합니다. 이 규칙은 100% 투명 어셈블리에 있는 코드에 플래그를 지정하므로 유용합니다. 100% 투명 어셈블리에 있는 코드는 런타임에 보안 예외나 예기치 않은 동작을 트리거합니다.

.NET Framework 2.0에서는 투명성이라는 기능이 추가되었습니다. 개별 메서드, 필드, 인터페이스, 클래스 및 형식은 투명하거나 중요할 수 있습니다.

투명 코드에서 보안 권한을 상승시킬 수는 없습니다. 그러므로 부여되거나 요청된 권한이 코드를 통해 자동으로 호출자 또는 AppDomain에 전달됩니다. '상승'의 예로는 Asserts, LinkDemands, SuppressUnmanagedCode 및 '안전하지 않은' 코드가 있습니다.

어셈블리는 100% 투명, 100% 중요, 투명/중요 혼합 중 하나일 수 있습니다.

어셈블리를 100% 투명으로 표시하려면 어셈블리 수준 특성을 다음과 같이 추가합니다.

 [assembly:System.Security.SecurityTransparent]

어셈블리를 100% 중요로 표시하려면 어셈블리 수준 특성을 다음과 같이 추가합니다.

[assembly:System.Security.SecurityCritical(System.Security.SecurityCriticalScope.Everything)]

어셈블리를 투명/중요 혼합으로 표시하려면 어셈블리 수준 특성을 다음과 같이 추가합니다.

 [assembly:System.Security.SecurityCritical]

투명 코드는 100% 중요 어셈블리에 나타날 수 없으며, 중요 코드는 100% 투명 어셈블리에 나타날 수 없습니다.

위반 문제를 해결하는 방법

이 문제를 해결하려면 어셈블리를 투명/중요 혼합으로 표시하거나 플래그가 지정된 코드에서 SecurityCritical 특성을 제거합니다.

경고를 표시하지 않는 경우

이 규칙에서는 메시지를 표시해야 합니다.