CA2126: Požadavky propojení typů vyžadují dědičnost požadavků
TypeName |
TypeLinkDemandsRequireInheritanceDemands |
CheckId |
CA2126 |
Kategorie |
Microsoft.Security |
Narušující změna |
Narušující |
Příčina
Veřejný neuzavřený typ, který je chráněn požadavkem na odkaz obsahuje přepisovatelnou metodu a ani typ, ani metoda nejsou chráněny požadavkem volání dědičnosti.
Popis pravidla
Požadavek na odkaz na metodu nebo její deklarující typ vyžaduje, aby měl nejbližší volající metody zadané oprávnění.Poptávka na volání dědičnosti na metodu vyžaduje, aby přepisující metoda měla zadané oprávnění.Poptávka na volání dědičnosti na typ vyžaduje, aby měla odvozená třída zadané oprávnění.
Jak vyřešit porušení
Chcete-li napravit porušení tohoto pravidla, zabezpečte typ nebo metodu pomocí požadavku na volání dědičnosti stejným oprávněním, jako u požadavku na odkaz.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.
Příklad
Následující příklad ukazuje typ, který toto pravidlo porušuje.
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() {}
};
}
Související pravidla
CA2108: Zkontrolujte deklarativní zabezpečení na hodnotách
CA2112: Zabezpečené typy by neměly vystavovat pole
CA2122: Nezveřejňujte nepřímo metody s požadavky propojení
CA2123: Požadavky na přepsání odkazu musejí být identické s bází