Freigeben über


CA2142: Transparenter Code darf nicht mit LinkDemands geschützt werden

TypeName

TransparentMethodsShouldNotBeProtectedWithLinkDemands

CheckId

CA2142

Kategorie

Microsoft.Security

Unterbrechende Änderung

Breaking

Ursache

Eine transparente Methode erfordert ein LinkDemand-Element oder eine andere Sicherheitsanforderung.

Regelbeschreibung

Diese Regel wird für transparente Methoden ausgelöst, die einen Zugriff durch LinkDemands erfordern. Sicherheitstransparenter Code sollte nicht für das Überprüfen der Sicherheit einer Operation zuständig sein und sollte daher keine Berechtigungen fordern. Da transparente Methoden sicherheitsneutral sein sollten, sollten sie keine Sicherheitsentscheidungen treffen. Darüber hinaus sollte sicherheitsrelevanter Code, in dem Sicherheitsentscheidungen getroffen werden, nicht auf transparentem Code gründen, in dem zuvor so eine Entscheidung getroffen wurde.

Behandeln von Verstößen

Um eine Verletzung dieser Regel zu korrigieren, entfernen Sie den Linkaufruf für die transparente Methode, oder markieren Sie die Methode mit dem SecuritySafeCriticalAttribute-Attribut, wenn Sicherheitsüberprüfungen ausgeführt werden, wie z. B. Sicherheitsanforderungen.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Im folgenden Beispiel wird die Regel für die Methode ausgelöst, da die Methode transparent ist und mit einem LinkDemand PermissionSet markiert ist, der einen LinkDemand enthält.

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()
        {
        }
    }
}

Unterdrücken Sie keine Warnung dieser Regel.