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 outra demanda de segurança.
Descrição da regra
Essa regra é acionado em métodos transparentes que requerem 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 contar no código transparent para feitas anteriormente essa decisão.
Como corrigir violações
Para corrigir uma violação desta regra, remova a demanda de link no método transparente ou marcar o método com SecuritySafeCriticalAttribute verificações de atributo se ele está executando a segurança, como, por exemplo, as exigências 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.