Sdílet prostřednictvím


SecurityTransparent-Assemblys dürfen keinen für die Sicherheit relevanten Code enthalten

Aktualisiert: November 2007

TypeName

SecurityTransparentAssembliesShouldNotContainSecurityCriticalCode

CheckId

CA2127

Kategorie

Microsoft.Security

Unterbrechende Änderung

Breaking

Ursache

Relevanter Code kann nicht in einer 100 % transparenten Assembly auftreten.

Regelbeschreibung

Durch diese Regel werden 100 % transparente Assemblys für alle SecurityCritical-Anmerkungen auf Typ-, Feld- und Methodenebene analysiert. Diese Regel ist hilfreich, da durch sie Code in einer 100 % transparenten Assembly gekennzeichnet wird. Durch Code in einer 100 % transparenten Assembly wird zur Laufzeit entweder eine Sicherheitsausnahme oder unerwartetes Verhalten ausgelöst.

In .NET Framework 2.0 wurde ein Feature mit dem Namen Transparenz eingeführt. Einzelne Methoden, Felder, Schnittstellen, Klassen und Typen können entweder sicherheitstransparent oder sicherheitsrelevant sein.

In transparentem Code können Sicherheitsberechtigungen nicht ausgeweitet werden. Daher werden alle durch Code gewährten oder angeforderten Berechtigungen automatisch durch den Code an den Aufrufer oder die Domäne der Hostanwendung weitergeleitet. Beispiele für Rechteerweiterungen sind Assertionen, LinkDemands, SuppressUnmanagedCode und 'unsicherer' Code.

Eine Assembly kann entweder aus 100 % transparentem, 100 % relevantem oder einer Kombination aus transparentem/relevantem Code bestehen.

Um eine Assembly als 100 % transparent zu markieren, fügen Sie das Attribut auf Assemblyebene hinzu:

 [assembly:System.Security.SecurityTransparent]

Um eine Assembly als 100 % relevant zu markieren, fügen Sie das Attribut auf Assemblyebene hinzu:

[assembly:System.Security.SecurityCritical(System.Security.SecurityCriticalScope.Everything)]

Um eine Assembly als Kombination aus transparentem/relevantem Code zu markieren, fügen Sie das Attribut auf Assemblyebene hinzu:

 [assembly:System.Security.SecurityCritical]

Transparenter Code darf in einer Assembly aus 100 % relevantem Code und relevanter Code in einer Assembly aus 100 % transparentem Code nicht vorkommen.

Behandlung von Verstößen

Um das Problem zu beheben, markieren Sie entweder die Assembly als Kombination aus transparentem/relevantem Code oder entfernen das SecurityCritical-Attribut aus dem gekennzeichneten Code.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Meldung dieser Regel.