-
Notifications
You must be signed in to change notification settings - Fork 4
Gendarme.Rules.Security.Cas.DoNotExposeMethodsProtectedByLinkDemandRule(git)
Sebastien Pouliot edited this page Mar 2, 2011
·
1 revision
Assembly: Gendarme.Rules.Security.Cas
Version: git
This rule checks for visible methods that are less protected (i.e. lower security requirements) than the method they call. If the called methods are protected by a LinkDemand then the caller can be used to bypass security checks.
Bad example:
public class BaseClass {
[SecurityPermission (SecurityAction.LinkDemand, Unrestricted = true)]
public virtual void VirtualMethod ()
{
}
}
public class Class : BaseClass {
// bad since a caller with only ControlAppDomain will be able to call the base method
[SecurityPermission (SecurityAction.LinkDemand, ControlAppDomain = true)]
public override void VirtualMethod ()
{
base.VirtualMethod ();
}
}
Good example (InheritanceDemand):
public class BaseClass {
[SecurityPermission (SecurityAction.LinkDemand, ControlAppDomain = true)]
public virtual void VirtualMethod ()
{
}
}
public class Class : BaseClass {
// ok since this permission cover the base class permission
[SecurityPermission (SecurityAction.LinkDemand, Unrestricted = true)]
public override void VirtualMethod ()
{
base.VirtualMethod ();
}
}
- Before Gendarme 2.2 this rule was part of Gendarme.Rules.Security and named MethodCallWithSubsetLinkDemandRule.
You can browse the latest source code of this rule on github.com
Note that this page was autogenerated (3/17/2011 1:55:44 PM) based on the xmldoc
comments inside the rules source code and cannot be edited from this wiki.
Please report any documentation errors, typos or suggestions to the
Gendarme Mailing List. Thanks!