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