Udostępnij za pośrednictwem


CA2126: Typ żądań konsolidacji wymaga żądań dziedziczenia

TypeName

TypeLinkDemandsRequireInheritanceDemands

CheckId

CA2126

Kategoria

Microsoft.Security

Zmiana kluczowa

Kluczowa

Przyczyna

Niezamknięty publiczny typ jest chroniony poprzez żądanie łącza i ma zastępowalną metodę, a żadne z nich nie jest chronione wymaganiem dziedziczenia.

Opis reguły

Żądanie łącza dla metody lub jej typ deklarujący wymaga od bezpośredniego wywołującego metodę określonych uprawnień.Żądanie dziedziczenia na metodzie wymaga, aby metoda przesłaniania miała określone uprawnienia.Żądanie dziedziczenia dla typu wymaga od klasy pochodnej określonych uprawnień.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, należy zabezpieczyć typ lub metodę żądaniem dziedziczenia dla tego samego uprawnienia co żądanie łącza.

Kiedy pomijać ostrzeżenia

Nie należy pomijać ostrzeżenia dotyczącego tej reguły.

Przykład

Poniższy przykład pokazuje typ, który narusza regułę.

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

Powiązane reguły

CA2108: Należy przeglądnąć zabezpieczenia deklaratywne typów wartościowych

CA2112: Typy zabezpieczone nie powinny uwidaczniać pól

CA2122: Nie należy pośrednio ujawniać metod w żądaniach konsolidacji

CA2123: Zastąpienia żądań konsolidacji powinny być identyczne z bazowym

Zobacz też

Koncepcje

Żądania dziedziczenia

Żądania połączeń

Żądania

Inne zasoby

Wytyczne dotyczące bezpiecznego programowania