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