Compartilhar via


CA2142: Código Transparent não deve ser protegido por LinkDemands

TypeName

TransparentMethodsShouldNotBeProtectedWithLinkDemands

CheckId

CA2142

<strong>Categoria</strong>

Microsoft.Security

Alteração significativa

Quebrando

Causa

Um método transparente requer um LinkDemand ou outra demanda de segurança.

Descrição da regra

Essa regra é acionado em métodos transparentes que requerem LinkDemands para acessá-los.Código de segurança transparente não deve ser responsável por verificar a segurança de uma operação e, portanto, não deve exigir permissões.Porque os métodos transparentes deveriam para ser neutra de segurança, eles deverão não tomar decisões de segurança.Além disso, safe code crítico, tomar decisões de segurança, não deve contar no código transparent para feitas anteriormente essa decisão.

Como corrigir violações

Para corrigir uma violação desta regra, remova a demanda de link no método transparente ou marcar o método com SecuritySafeCriticalAttribute verificações de atributo se ele está executando a segurança, como, por exemplo, as exigências de segurança.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

No exemplo a seguir, a regra dispara no método, pois o método é transparente e é marcado com um LinkDemand PermissionSet que contém um LinkDemand.

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

Não suprimir um aviso da regra.