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.