Partilhar via


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

TypeName

TransparentMethodsShouldNotDemand

CheckId

CA2143

Categoria

Microsoft.Security

Alteração Significativa

Quebra

Causa

Um tipo ou um método tranparent declarativa serão marcados com uma demanda de SecurityAction.Demand ou o método chama o método de CodeAccessPermission.Demand .

Descrição da Regra

A segurança que o código transparente não deve ser responsável para verificar a segurança de uma operação, e não deve solicitar permissões em virtude disso.O código transparente de segurança deve usar demandas completas para tomar decisões de segurança e o código seguro- crítico não deve confiar no código transparente para ter feito a demanda completa.Qualquer código que executar verificações de segurança, como a segurança requer, deve ser seguro- crítico em vez disso.

Como Corrigir Violações

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

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

Os arquivos da regra no seguinte código porque um método transparente faz uma procura declarativa de segurança.

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: o código transparente não deve ser protegido com LinkDemands