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