Sdílet prostřednictvím


Typverknüpfungsaufrufe erfordern Vererbungsanforderungen

Aktualisiert: November 2007

     TypeName

TypeLinkDemandsRequireInheritanceDemands

CheckId

CA2126

Kategorie

Microsoft.Security

Unterbrechende Änderung

Breaking

Ursache

Ein öffentlicher unversiegelter Typ wird mittels eines Verknüpfungsaufrufs geschützt und weist eine überschreibbare Methode auf, aber weder der Typ noch die Methode werden durch eine Vererbungsanforderung geschützt.

Regelbeschreibung

Für einen Verknüpfungsaufruf, der für eine Methode oder den zugehörigen deklarierenden Typ durchgeführt wird, muss der unmittelbare Aufrufer der Methode über die angegebene Berechtigung verfügen. Für eine Vererbungsanforderung, die für eine Methode durchgeführt wird, muss eine überschreibende Methode die angegebene Berechtigung aufweisen. Für eine Vererbungsanforderung, die für einen Typ durchgeführt wird, muss eine Ableitungsklasse die angegebene Berechtigung aufweisen.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, schützen Sie den Typ oder die Methode mit einer Vererbungsanforderung, für die dieselbe Berechtigung erforderlich ist wie für den Verknüpfungsaufruf.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel.

Beispiel

Im folgenden Beispiel wird ein Typ veranschaulicht, der gegen die Regel verstößt.

Imports System
Imports System.Security.Permissions

Namespace SecurityLibrary

    <EnvironmentPermission(SecurityAction.LinkDemand, Read:="PATH")> _
    Public Class TypesWithLinkDemands

        Protected Overridable Sub UnsecuredMethod()
        End Sub

        <EnvironmentPermission(SecurityAction.InheritanceDemand, Read:="PATH")> _
        Protected Overridable Sub SecuredMethod()
        End Sub

    End Class

End Namespace
using System;
using System.Security.Permissions;

namespace SecurityLibrary
{
   [EnvironmentPermission(SecurityAction.LinkDemand, Read = "PATH")]
   public class TypesWithLinkDemands
   {
      public virtual void UnsecuredMethod() {}

      [EnvironmentPermission(SecurityAction.InheritanceDemand, Read = "PATH")]
      public virtual void SecuredMethod() { }
   }
}
using namespace System;
using namespace System::Security::Permissions;

namespace SecurityLibrary
{
    [EnvironmentPermission(SecurityAction::LinkDemand, Read = "PATH")]
    public ref class TypesWithLinkDemands
    {
    protected:
        virtual void UnsecuredMethod() {}

        [EnvironmentPermission(SecurityAction::InheritanceDemand, 
           Read = "PATH")]
        virtual void SecuredMethod() {}
    };
}

Verwandte Regeln

Deklarative Sicherheit bei Werttypen überprüfen

Gesicherte Typen sollten keine Felder verfügbar machen

Methoden mit Verknüpfungsaufruf nicht indirekt verfügbar machen

Überschreibungsverknüpfungsaufrufe sollten mit der Basis identisch sein

Siehe auch

Konzepte

Vererbungsforderungen

Verknüpfungsaufrufe

Weitere Ressourcen

Richtlinien für das Schreiben von sicherem Code

Datenzugriff