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 outros por demanda de segurança.

Descrição da regra

Essa regra é acionado em métodos transparentes que requerem a 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 confiar no código transparent para feitas anteriormente essa decisão.

Como corrigir violações

Para corrigir uma violação desta regra, remover a demanda de link para o método transparente ou marcar o método com SecuritySafeCriticalAttribute verificações de atributo se está executando a segurança, como demandas 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.