Partilhar via


CA2143: Métodos transparentes não devem usar demandas de segurança

TypeName

TransparentMethodsShouldNotDemand

CheckId

CA2143

<strong>Categoria</strong>

Microsoft.Security

Alteração significativa

Quebrando

Causa

Um tipo de tranparent ou o método declarativamente é marcado com um System.Security.Permissions.SecurityAction.Demand por demanda ou chamadas de método de CodeAccessPermission.Demand método.

Descrição da regra

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. Código de segurança transparente deve usar as demandas completas para tomar decisões de segurança e código crítico de segurança não deve confiar no código transparent ter feito a demanda completa. Qualquer código que executa verificações de segurança, como, por exemplo, exigências de segurança deve ser seguro crítico em vez disso.

Como corrigir violações

Em geral, para corrigir uma violação desta regra, marcar o método com o SecuritySafeCriticalAttribute atributo. Você também pode remover a demanda.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

A regra de arquivos com o código a seguir como um método transparent faz uma demanda de segurança declarativa.

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

Consulte também

Referência

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