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 método declarativamente é marcado com um System.Security.Permissions.SecurityAction.Demand por demanda ou as 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 transparente de segurança deve usar as demandas completas para tomar decisões de segurança e código de segurança crítico não deve depender de 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