CA2142: 투명한 코드는 LinkDemands를 사용하여 보호해서는 안 됩니다.
TypeName |
TransparentMethodsShouldNotBeProtectedWithLinkDemands |
CheckId |
CA2142 |
범주 |
Microsoft.Security |
변경 수준 |
주요 변경 |
원인
투명 메서드는 LinkDemand 또는 다른 보안 요청이 필요합니다.
규칙 설명
이 규칙은 액세스하는 데 LinkDemands가 필요한 투명한 메서드에 적용됩니다.보안 투명 코드는 작업 보안을 확인할 책임이 없으므로 권한을 요구해서는 안 됩니다.투명한 메서드는 보안 중립적으로 가정하기 때문에 이러한 모든 보안 결정을 내려서는 안 됩니다.또한 보안 결정에 사용되는 안전한 중요 코드는 이전에 이러한 결정을 내리는 투명 코드를 사용해서는 안 됩니다.
위반 문제를 해결하는 방법
이 규칙 위반 문제를 해결하려면 투명한 메서드에서 링크 요구를 제거하거나 보안 요구 같은 보안 검사를 수행하는 경우 SecuritySafeCriticalAttribute 특성으로 메서드를 표시하십시오.
경고를 표시하지 않는 경우
이 규칙에서는 경고를 표시해야 합니다.
예제
다음 예제에서 메서드는 투명하고 LinkDemand를 포함하는 LinkDemand PermissionSet로 표시되어 있기 때문에 규칙이 메서드에서 실행됩니다.
using System;
using System.Security.Permissions;
namespace TransparencyWarningsDemo
{
public class TransparentMethodsProtectedWithLinkDemandsClass
{
// CA2142 violation - transparent code using a LinkDemand. This can be fixed by removing the LinkDemand
// from the method.
[PermissionSet(SecurityAction.LinkDemand, Unrestricted = true)]
public void TransparentMethod()
{
}
}
}
이 규칙에서는 경고를 표시해야 합니다.