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.