Udostępnij za pośrednictwem


CA2142: Jawny kod nie powinien być chroniony za pomocą LinkDemands

Pozycja Wartość
Ruleid CA2142
Kategoria Microsoft.Security
Zmiana powodująca niezgodność Kluczowa

Przyczyna

Metoda przezroczysta wymaga innego SecurityAction zapotrzebowania na zabezpieczenia.

Uwaga

Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.

Opis reguły

Ta reguła jest uruchamiana na przezroczystych metodach, które wymagają linkuDemands w celu uzyskania do nich dostępu. Przezroczysty kod zabezpieczeń nie powinien być odpowiedzialny za weryfikację zabezpieczeń operacji, a zatem nie powinien wymagać uprawnień. Ponieważ metody przezroczyste mają być neutralne pod względem bezpieczeństwa, nie powinny podejmować żadnych decyzji dotyczących zabezpieczeń. Ponadto bezpieczny kod krytyczny, który podejmuje decyzje dotyczące zabezpieczeń, nie powinien polegać na przezroczystym kodzie, aby wcześniej podjął taką decyzję.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, usuń żądanie łącza dla metody przezroczystej lub oznacz metodę SecuritySafeCriticalAttribute za pomocą atrybutu , jeśli wykonuje kontrole zabezpieczeń, takie jak wymagania dotyczące zabezpieczeń.

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń dla tej reguły.

Przykład

W poniższym przykładzie reguła jest uruchamiana w metodzie, ponieważ metoda jest przezroczysta i jest oznaczona elementem LinkDemand PermissionSet zawierającym SecurityActionelement .

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()
        {
        }
    }
}

Nie pomijaj ostrzeżeń dla tej reguły.