CA2143: Jawne metody nie powinny używać żądań zabezpieczeń
TypeName |
TransparentMethodsShouldNotDemand |
CheckId |
CA2143 |
Kategoria |
Microsoft.Security |
Zmiana kluczowa |
Kluczowa |
Przyczyna
Typ przezroczysty lub metoda jest deklaratywnie oznaczona przez żądanie SecurityAction.Demand lub metoda wywołuje metodę CodeAccessPermission.Demand.
Opis reguły
Przezroczysty kod zabezpieczeń nie powinien być odpowiedzialny za weryfikację zabezpieczeń operacji, a zatem nie powinien wymagać uprawnień.Przejrzysty pod względem bezpieczeństwa kod powinien używać pełnych żądań, aby podejmować decyzje związane z zabezpieczeniami i kod krytyczny pod względem zabezpieczeń nie powinien polegać na kodzie przezroczystym, aby wykonywać pełne żądanie.Każdy kod, który wykonuje sprawdzenie zabezpieczeń, takie jak żądania zabezpieczeń, powinien być w zamian bezpiecznie-krytyczny.
Jak naprawić naruszenia
W ogólności, aby naprawić naruszenie tej reguły, oznacz metodę atrybutem SecuritySafeCriticalAttribute.Można również usunąć żądanie.
Kiedy pominąć ostrzeżenia
Nie należy pomijać ostrzeżenia dotyczącego tej reguły.
Przykład
Pliki reguł na poniższym kod, ponieważ przezroczysta metoda wykonuje żądanie zabezpieczenia deklaratywnego.
using System;
using System.Security;
using System.Security.Permissions;
namespace TransparencyWarningsDemo
{
public class TransparentMethodDemandClass
{
// CA2142 violation - transparent code using a Demand. This can be fixed by making the method safe critical.
[PermissionSet(SecurityAction.Demand, Unrestricted = true)]
public void TransparentMethod()
{
}
}
}
Zobacz też
Informacje
CA2142: Jawny kod nie powinien być chroniony za pomocą LinkDemands