Udostępnij za pośrednictwem


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