다음을 통해 공유


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()
        {
        }
    }
}

참고 항목

참조

CA2142: 투명한 코드는 LinkDemands를 사용하여 보호해서는 안 됩니다.