CA2143: 투명한 메서드는 보안 요청을 사용해서는 안 됩니다.
TypeName |
TransparentMethodsShouldNotDemand |
CheckId |
CA2143 |
범주 |
Microsoft.Security |
변경 수준 |
주요 변경 |
원인
투명 형식 또는 메서드는 System.Security.Permissions.SecurityAction.Demand 요구로 선언적으로 표시되거나 메서드가 CodeAccessPermission.Demand 메서드를 호출합니다.
규칙 설명
보안 투명 코드는 작업 보안을 확인할 책임이 없으므로 권한을 요구해서는 안 됩니다. 보안 투명 코드는 보안에 중요한 결정을 내리는 데 전체 요청을 사용해야 하며 안전에 중요한 코드는 전체 요청을 위해 투명 코드를 사용해서는 안 됩니다. 보안 요청 같은 보안 검사를 수행하는 코드는 대신 안전에 중요해야 합니다.
위반 문제를 해결하는 방법
일반적으로 이 규칙의 위반 문제를 해결하려면 메서드를 SecuritySafeCriticalAttribute 특성으로 표시합니다. 요청을 제거할 수도 있습니다.
경고를 표시하지 않는 경우
이 규칙에서는 경고를 표시해야 합니다.
예제
투명 메서드는 선언적 보안 요청에 만들기 때문에 다음 코드의 규칙이 실행됩니다.
using System;
using System.Security;
using System.Security.Permissions;
namespace TransparencyWarningsDemo
{
public class TransparentMethodDemandClass
{
// CA2142 violation - transparent code using a Demand. This can be fixed by making the method safe critical.
[PermissionSet(SecurityAction.Demand, Unrestricted = true)]
public void TransparentMethod()
{
}
}
}