Freigeben über


CA2143: Transparente Methoden dürfen keine Sicherheitsanforderungen verwenden

TypeName

TransparentMethodsShouldNotDemand

CheckId

CA2143

Kategorie

Microsoft.Security

Unterbrechende Änderung

Breaking

Ursache

Ein transparenter Typ oder eine Methode wird deklarativ mit einer System.Security.Permissions.SecurityAction.Demand-Forderung markiert, oder die Methode ruft die CodeAccessPermission.Demand-Methode auf.

Regelbeschreibung

Sicherheitstransparenter Code sollte nicht für das Überprüfen der Sicherheit einer Operation zuständig sein und sollte daher keine Berechtigungen fordern. Sicherheitstransparenter Code sollte mithilfe von vollständigen Anforderungen Sicherheitsentscheidungen fällen, und sicherheitskritischer Code sollte für die vollständige Anforderung nicht auf transparentem Code beruhen. Jeder Code, in dem Sicherheitsüberprüfungen, z. B. Sicherheitsanforderungen, ausgeführt werden, sollte stattdessen sicherheitskritisch sein.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, markieren Sie im Allgemeinen die Methode oder den Typ mit dem SecuritySafeCriticalAttribute-Attribut: Sie können auch die Forderung entfernen.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Die Regel wird im folgenden Code abgelegt, da eine transparente Methode eine deklarative Sicherheitsforderung macht.

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

Siehe auch

Referenz

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