Share via


CA2143: Transparente Methoden dürfen keine Sicherheitsanforderungen verwenden.

Element Wert
RuleId CA2143
Category Microsoft.Security
Unterbrechende Änderung Breaking

Ursache

Transparente Typ oder Methoden werden deklarativ mit einer System.Security.Permissions.SecurityAction.Demand-Anforderung gekennzeichnet, oder die Methode ruft die System.Security.CodeAccessPermission.Demand-Methode auf.

Hinweis

Diese Regel wurde als veraltet markiert. Weitere Informationen finden Sie unter Veraltete Regeln.

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. Sämtlicher Code, der Sicherheitsüberprüfungen durchführt, also z. B. auch Sicherheitsanforderungen, sollte stattdessen sicherheitskritisch sein.

Behandeln von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, markieren Sie die entsprechende Methode im Allgemeinen mit dem SecuritySafeCriticalAttribute-Attribut. Sie können die Anforderung auch entfernen.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Die Regel wird beim folgenden Code ausgelöst, da eine transparente Methode eine deklarative Sicherheitsanforderungen stellt.

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

Weitere Informationen

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