Partilhar via


CA2142: o código transparente não deve ser protegido com LinkDemands

TypeName

TransparentMethodsShouldNotBeProtectedWithLinkDemands

CheckId

CA2142

Categoria

Microsoft.Security

Alteração Significativa

Quebra

Causa

Um método transparente requer LinkDemand ou outra procura de segurança.

Descrição da Regra

Esta regra é disparada os métodos que exigem LinkDemands transparentes para acessá-los.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.Como os métodos são transparentes suponha para ser neutro de segurança, não devem fazer nenhuma decisões de segurança.Além disso, o código crítico de seguro, que tomar decisões de segurança, não deve confiar no código transparente para ter feito anteriormente essa decisão.

Como Corrigir Violações

Para corrigir uma violação desta regra, para remover a procura de link no método ou transparente para marcar o método com o atributo de SecuritySafeCriticalAttribute se estiver executando verificações de segurança, como a segurança requer.

Quando Suprimir Alertas

Não elimine um alerta desta regra.

Exemplo

No exemplo a seguir, a regra é acionado no método como o método é transparente e é marcado com um LinkDemand PermissionSet que contém 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 elimine um alerta desta regra.