CA2142: Transparentní kód nemůže být chráněn pomocí LinkDemands
TypeName |
TransparentMethodsShouldNotBeProtectedWithLinkDemands |
CheckId |
CA2142 |
Kategorie |
Microsoft.Security |
Narušující změna |
Narušující |
Příčina
Transparentní metoda vyžaduje LinkDemand nebo jiný požadavek zabezpečení.
Popis pravidla
Toto pravidlo je vyvoláno na transparentních metodách, které vyžadují pro přístup k nim LinkDemands.Kód transparentní pro zabezpečení by neměl být odpovědný za ověření zabezpečení operace, a proto by neměl požadovat oprávnění.Protože transparentní metody mají být pro zabezpečení neutrální, neměly by dělat žádná rozhodnutí týkající se zabezpečení.Kód kritický pro zabezpečení, který činí rozhodnutí týkající se zabezpečení, by navíc neměl spoléhat na transparentní kód, že již dříve takové rozhodnutí přijal.
Jak vyřešit porušení
Pro nápravu porušení tohoto pravidla odstraňte požadavek propojení na transparentní metodě nebo označte metodu s atributem SecuritySafeCriticalAttribute, pokud provádí kontrolu zabezpečení, například požadavky zabezpečení.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.
Příklad
V následujícím příkladu je pravidlo vyvoláno na metodě, protože metoda je transparentní a je označena LinkDemand PermissionSet, která obsahuje LinkDemand.
using System;
using System.Security.Permissions;
namespace TransparencyWarningsDemo
{
public class TransparentMethodsProtectedWithLinkDemandsClass
{
// CA2142 violation - transparent code using a LinkDemand. This can be fixed by removing the LinkDemand
// from the method.
[PermissionSet(SecurityAction.LinkDemand, Unrestricted = true)]
public void TransparentMethod()
{
}
}
}
Nepotlačujte upozornění na toto pravidlo.